`

Java程序(聊天)

阅读更多

import java.io.*; 
public class ServerClass{ 
public static void main(String args[]){ 
int i=0; 
try{ 
ServerSocket ss=new ServerSocket(2345);//为该服务器开设一个端口,该端口供客户机程序来访问。 
System.out.println("服务器启动......"); 
while(true){ 
Socket sock=ss.accept();//sock对象接收客户机的连接请求,程序运行到这里将处于等待状态。 
i++; 
System.out.println("接受连接请求"+i); 
PrintStream out=new PrintStream(sock.getOutputStream());//获得输出流 
out.println("你好"); 
out.close(); 
sock.close(); 
} 
}catch(IOException e){ 
System.out.println(e); 
} 
} 
} 


import java.io.*; 
import java.net.*; 
public class AClient{ 
public static void main(String args[]){ 
try{ 
Socket sock=new Socket("127.0.0.1",2345);//根据具体的(正在用的机器的)IP和端口,创建一个Socket对象 
BufferedReader in=new BufferedReader(new InputStreamReader(sock.getInputStream()));//获得输入流。 
String s=in.readLine();//从输入流读入一行内容。 
System.out.println(s);//打印出 
in.close(); 
}catch(IOException e){} 
} 
} 



import java.io.*; 
import java.net.*; 
import javax.swing.*; 
import java.awt.event.*; 
import java.awt.*; 
/** 
用户界面ServerUI 
*/ 
public class ServerUI extends JFrame{ 
JTextArea mainArea; 
JTextArea sendArea; 
JTextField indexArea; 
SvrCom server; 
public void setServer( SvrCom server ) 
{ this.server = server; } 
public ServerUI() 
{ 
super("服务器端"); 
Container contain = getContentPane(); 
contain.setLayout( new BorderLayout() ); 
mainArea = new JTextArea(); 
JScrollPane mainAreaP = new JScrollPane( mainArea ); 
JPanel panel = new JPanel(); 
panel.setLayout( new BorderLayout() ); 
sendArea = new JTextArea(3, 8); 
JButton sendBtn = new JButton("发送"); 
sendBtn.addActionListener( new ActionListener()//注册动作监听器 
{ 
public void actionPerformed(ActionEvent ae) 
{ 
server.sendMsg(sendArea.getText());//把信息传递到客户端 
mainArea.append( "【服务器】" + sendArea.getText() + "\n" );//把信息显示在服务器的聊天记录区域 
sendArea.setText(""); 
} 
} 
); 
JPanel tmpPanel = new JPanel(); 
indexArea = new JTextField(2); 
indexArea.setText("0"); 
tmpPanel.add( sendBtn ); 
tmpPanel.add( indexArea ); 
panel.add( tmpPanel, BorderLayout.EAST ); 
panel.add(sendArea, BorderLayout.CENTER ); 
contain.add( mainAreaP, BorderLayout.CENTER ); 
contain.add( panel, BorderLayout.SOUTH ); 
setSize( 500, 300); 
setVisible( true ); 
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 
public static void main(String[] args) 
{ 
ServerUI ui = new ServerUI(); 
SvrCom server = new SvrCom( ui );//创建并启动网络通讯线程,准备接受客户端数据包 
} 
} 



/** 
通讯类SvrCom负责守候数据到来 
*/ 
class SvrCom extends Thread//网络通讯类 
{ 
Socket client; 
ServerSocket soc; 
BufferedReader in; 
PrintWriter out; 
ServerUI ui; 
// ChatServer server; 

public SvrCom( ServerUI ui ){ //初始化SvrCom类 
this.ui = ui; 
ui.setServer( this ); 
try { 
soc = new ServerSocket(6666 ); //开设服务器端口6666 
System.out.println( "启动服务器成功,等待端口号:6666" ); 
client = soc.accept();//当客户机请求连接时,创建一条链接 
System.out.println( "连接成功!来自" + client.toString() ); 
in = new BufferedReader( new InputStreamReader( client.getInputStream()) ); 
out = new PrintWriter( client.getOutputStream() , true); 
} catch( Exception ex ) { System.out.println( ex ); } 
start(); 
} 
public void run () {// 用于监听客户端发送来的信息 
String msg = ""; 
while( true ) 
{ 
try { 
msg = in.readLine();//从in对象上读数据信息 
} 
catch( SocketException ex ) { 
System.out.println(ex); 
break; 
} 
catch( Exception ex ) { System.out.println(ex); } 
if( msg!=null && msg.trim()!="" ) 
{ 
System.out.println(">>" + msg ); 
ui.mainArea.append( msg + "\n" ); 
} 
} 
} 
public void sendMsg( String msg ) {// 用于发送信息 
try { 
out.println("【服务器】" + msg );//把信息写入输出流 
} 
catch(Exception e) { 
System.out.println( e ); 
} 
} 
} 




import java.io.*; 
import java.net.*; 
import javax.swing.*; 
import java.awt.event.*; 
import java.awt.*; 
/** 
用户界面ClientUI 
*/ 
public class ClientUI extends JFrame 
{ 
JTextArea mainArea; 
JTextArea sendArea; 
ChatClient client; 
JTextField ipArea; 
JButton btnLink; 
public void setClient( ChatClient client ) 
{ this.client = client; } 
public ClientUI() 
{ 
super("客户端"); 
Container contain = getContentPane(); 
contain.setLayout( new BorderLayout() ); 
mainArea = new JTextArea(); 
JScrollPane mainAreaP = new JScrollPane( mainArea );//为文本区添加滚动条 
JPanel panel = new JPanel(); 
panel.setLayout( new BorderLayout()); 
sendArea = new JTextArea(3, 8); 
JButton sendBtn = new JButton("发送"); 
sendBtn.addActionListener( new ActionListener() 
{ 
public void actionPerformed(ActionEvent ae) 
{ 
client.sendMsg( sendArea.getText() ); 
mainArea.append( "【客户端】"+sendArea.getText() + "\n" ); 
sendArea.setText(""); 
} 
} 
); 
JPanel ipPanel = new JPanel(); 
ipPanel.setLayout( new FlowLayout( FlowLayout.LEFT , 10, 10 ) ); 
ipPanel.add( new JLabel("服务器:") ); 
ipArea = new JTextField( 12 ) ; 
ipArea.setText( "127.0.0.1" ); 
ipPanel.add( ipArea ); 
btnLink = new JButton("连接"); 
ipPanel.add( btnLink ); 
btnLink.addActionListener( new ActionListener() 
{ 
public void actionPerformed(ActionEvent ae) 
{ 
client = new ChatClient( ipArea.getText() , 6666, ClientUI.this );//创建socket对象 
ClientUI.this.setClient( client ); 
} 
} 
); 
panel.add( sendBtn, BorderLayout.EAST ); 
panel.add( sendArea, BorderLayout.CENTER ); 
contain.add( ipPanel, BorderLayout.NORTH ); 
contain.add( mainAreaP, BorderLayout.CENTER ); 
contain.add( panel, BorderLayout.SOUTH ); 
setSize( 500, 300); 
setVisible( true ); 
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 
public static void main(String[] args) 
{ 
ClientUI ui = new ClientUI(); 
} 
} 



/** 
通讯类ChatClient负责守候数据到来 
*/ 
class ChatClient extends Thread 
{ 
Socket sc;// 对象sc,用来处理与服务?鞯耐ㄐ? 
BufferedReader in;//声明输入流缓冲区,用于存储服务器发来的信息 
PrintWriter out;//声明打印输出流,用于信息的发送 
ClientUI ui; 

public ChatClient( String ip, int port, ClientUI ui ){//初始化ChatClient类 
this.ui = ui; 
try{ 
sc = new Socket(ip , port); // 创建sc, 用服务器ip和端口作参数 
System.out.println("已顺利联接到服务器。"); 
out = new PrintWriter( sc.getOutputStream(), true ); 
in = new BufferedReader( new InputStreamReader( sc.getInputStream() ) ); 
} 
catch(Exception e) { 
System.out.println( e ); 
} 
start(); 
} 
public void run () { // 用于监听服务器端发送来的信息 
String msg = ""; 
while( true ) 
{ 
try { 
msg = in.readLine();//从缓冲区读入一行字符存于msg 
} catch( SocketException ex ) { System.out.println(ex); break; } 
catch( Exception ex ) { System.out.println(ex); } 
if( msg!=null && msg.trim()!="" ) 
{//若msg信息不为空 
System.out.println(">>" + msg ); 
ui.mainArea.append( msg + "\n" );//把msg信息添加到客户端的文本区域内 
} 
} 
} 
public void sendMsg( String msg ) {// 用于发送信息 
try { 
out.println("【客户端】" + msg ); 
} 
catch(Exception e) { 
System.out.println( e ); 
} 
} 
} 
分享到:
评论
4 楼 smalltiger1984 2009-05-18  
import java.io.*;   
public class ServerClass{   
public static void main(String args[]){   
int i=0;   
try{   
ServerSocket ss=new ServerSocket(2345);//为该服务器开设一个端口,该端口供客户机程序来访问。   
System.out.println("服务器启动......");   
while(true){   
Socket sock=ss.accept();//sock对象接收客户机的连接请求,程序运行到这里将处于等待状态。   
i++;   
System.out.println("接受连接请求"+i);   
PrintStream out=new PrintStream(sock.getOutputStream());//获得输出流   
out.println("你好2");   
out.close();   
sock.close();   
}   
}catch(IOException e){   
System.out.println(e);   
}   
}   
3 楼 zhou2324 2009-05-18  
import java.io.*; 
public class ServerClass{ 
public static void main(String args[]){ 
int i=0; 
try{ 
ServerSocket ss=new ServerSocket(2345);//为该服务器开设一个端口,该端口供客户机程序来访问。 
System.out.println("服务器启动......"); 
while(true){ 
Socket sock=ss.accept();//sock对象接收客户机的连接请求,程序运行到这里将处于等待状态。 
i++; 
System.out.println("接受连接请求"+i); 
PrintStream out=new PrintStream(sock.getOutputStream());//获得输出流 
out.println("你好"); 
out.close(); 
sock.close(); 
} 
}catch(IOException e){ 
System.out.println(e); 
} 
} 
} 

2 楼 xf.zhouwenjun 2009-05-16  
yuantong 写道

老兄,把代码格式化行不?代码放到代码片段不是更好?

呵呵,下次 我再贴的时间 注意
1 楼 yuantong 2009-05-13  
老兄,把代码格式化行不?代码放到代码片段不是更好?

相关推荐

    java聊天小程序

    简单的群聊系统 简单的界面 类似于QQ聊天 不过仅仅实现了聊天

    java聊天程序java聊天程序

    java聊天程序java聊天程序java聊天程序java聊天程序java聊天程序java聊天程序java聊天程序java聊天程序

    JAVA聊天程序JAVA聊天程序2(API)

    JAVA聊天程序JAVA聊天程序JAVA聊天程序JAVA聊天程序JAVA聊天程序JAVA聊天程序JAVA聊天程序JAVA聊天程序JAVA聊天程序JAVA聊天程序JAVA聊天程序

    Java简易聊天程序

    Java简易聊天程序Java简易聊天程序Java简易聊天程序Java简易聊天程序Java简易聊天程序Java简易聊天程序Java简易聊天程序

    JAVA聊天程序JAVA聊天程序JAVA聊天程序3

    JAVA聊天程序JAVA聊天程序JAVA聊天程序JAVA聊天程序JAVA聊天程序JAVA聊天程序JAVA聊天程序JAVA聊天程序JAVA聊天程序JAVA聊天程序JAVA聊天程序JAVA聊天程序JAVA聊天程序JAVA聊天程序

    java局域网聊天程序

    java局域网聊天程序,java局域网聊天程序,java局域网聊天程序,java局域网聊天程序,java局域网聊天程序,java局域网聊天程序

    JAVA简单聊天程序

    我用JAVA的servlet写的这个小聊天程序,总共才几KB,但可以在不同的电脑上进行多人对话,删除记录等,我把数据库验证登陆写进去了,你若不想要这个登陆程序可以删掉,那样就不需要登陆直接开始聊天了。这个程序结构...

    Java SE程序 qq聊天

    Java SE程序 qq聊天Java SE程序 qq聊天Java SE程序 qq聊天Java SE程序 qq聊天Java SE程序 qq聊天Java SE程序 qq聊天Java SE程序 qq聊天Java SE程序 qq聊天Java SE程序 qq聊天Java SE程序 qq聊天Java SE程序 qq聊天...

    JAVA局域网聊天程序

    JAVA局域网聊天程序 聊天室程序

    Java Socket 聊天程序(图形界面)

    实现Java Socket聊天多线程编程,图形化界面,多人聊天(群聊),私人聊天,是基于本地模拟的Java聊天程序。 Java Socket聊天程序是我用了三天的时间写出来,用Netbeans建的工程,图形化界面是Netbeans拖拉出来的,...

    java聊天小程序.java聊天小程序

    java聊天小程序。java聊天小程序java聊天小程序。java聊天小程序。java聊天小程序。

    Java聊天室程序(java)

    Java聊天室程序(java)Java聊天室程序(java)Java聊天室程序(java)Java聊天室程序(java)Java聊天室程序(java)Java聊天室程序(java)Java聊天室程序(java)Java聊天室程序(java)Java聊天室程序(java)Java聊天室程序(java)...

    java web聊天程序

    java实现的一个web聊天程序 服务器端使用的是ServerSocket 客户端使用websocket

    java实现聊天程序

    java实现简单聊天程序,包含数据库,网络通信,代码简单易懂。功能实现较为完整。

    简单的java程序聊天软件

    实现服务端(ChatSever)和客户端(ChatClient)的通信

    用Java实现的一个聊天程序

    一个简单的聊天小程序,用Java实现,基于cs

    Java聊天室程序

    简单的Java聊天室程序简单的Java聊天室程序简单的Java聊天室程序简单的Java聊天室程序简单的Java聊天室程序简单的Java聊天室程序简单的Java聊天室程序

    Java聊天室程序(java).zip

    Java聊天室程序(java)Java聊天室程序(java)Java聊天室程序(java)Java聊天室程序(java)Java聊天室程序(java)Java聊天室程序(java)Java聊天室程序(java)Java聊天室程序(java)Java聊天室程序(java)Java聊天室程序(java)...

    基于java的聊天小程序

    关于java socket的通信软件 。

    JAVA聊天程序代码JAVA聊天程序代码

    JAVA聊天程序代码JAVA聊天程序代码JAVA聊天程序代码JAVA聊天程序代码JAVA聊天程序代码JAVA聊天程序代码JAVA聊天程序代码JAVA聊天程序代码JAVA聊天程序代码

Global site tag (gtag.js) - Google Analytics