知识大全 java网络通信小程序
Posted 文件
篇首语:生也有涯,知也无涯。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 java网络通信小程序相关的知识,希望对你有一定的参考价值。
//ChatServer java文件
import java io *;
import *;
import java util *;
public class ChatServer
boolean started = false;
ServerSocket ss = null;
List<Client> clients = new ArrayList<Client>();
public static void main(String[] args)
new ChatServer() start();
public void start()
try
ss = new ServerSocket( );
started = true;
catch (BindException e)
System out println( 端口使用中 );
System out println( 请关掉相关程序并重新运行服务器! );
System exit( );
catch (IOException e)
e printStackTrace();
try
while(started)
Socket s = ss accept();
Client c = new Client(s);
System out println( a client connected! );
new Thread(c) start();
clients add(c);
//dis close();
catch (IOException e)
e printStackTrace();
finally
try
ss close();
catch (IOException e)
// TODO Auto generated catch block
e printStackTrace();
class Client implements Runnable
private Socket s;
private DataInputStream dis = null;
private DataOutputStream dos = null;
private boolean bConnected = false;
public Client(Socket s)
this s = s;
try
dis = new DataInputStream(s getInputStream());
dos = new DataOutputStream(s getOutputStream());
bConnected = true;
catch (IOException e)
e printStackTrace();
public void send(String str)
try
dos writeUTF(str);
catch (IOException e)
clients remove(this);
System out println( 对方退出了!我从List里面去掉了! );
//e printStackTrace();
public void run()
try
while(bConnected)
String str = dis readUTF();
System out println(str);
for(int i= ; i<clients size(); i++)
Client c = clients get(i);
c send(str);
//System out println( a string send ! );
/*
for(Iterator<Client> it = erator(); it hasNext(); )
Client c = it next();
c send(str);
*/
/*
Iterator<Client> it = erator();
while(it hasNext())
Client c = it next();
c send(str);
*/
catch (EOFException e)
System out println( Client closed! );
catch (IOException e)
e printStackTrace();
finally
try
if(dis != null) dis close();
if(dos != null) dos close();
if(s != null)
s close();
//s = null;
catch (IOException e )
e printStackTrace();
//ChatClient java文件
import java awt *;
import java awt event *;
import java io *;
import *;
public class ChatClient extends Frame
Socket s = null;
DataOutputStream dos = null;
DataInputStream dis = null;
private boolean bConnected = false;
TextField tfTxt = new TextField();
TextArea taContent = new TextArea();
Thread tRecv = new Thread(new RecvThread());
public static void main(String[] args)
new ChatClient() launchFrame();
public void launchFrame()
setLocation( );
this setSize( );
add(tfTxt BorderLayout SOUTH);
add(taContent BorderLayout NORTH);
pack();
this addWindowListener(new WindowAdapter()
@Override
public void windowClosing(WindowEvent arg )
disconnect();
System exit( );
);
tfTxt addActionListener(new TFListener());
setVisible(true);
connect();
tRecv start();
public void connect()
try
s = new Socket( );
dos = new DataOutputStream(s getOutputStream());
dis = new DataInputStream(s getInputStream());
System out println( connected! );
bConnected = true;
catch (UnknownHostException e)
e printStackTrace();
catch (IOException e)
e printStackTrace();
public void disconnect()
try
dos close();
dis close();
s close();
catch (IOException e)
e printStackTrace();
/*
try
bConnected = false;
tRecv join();
catch(InterruptedException e)
e printStackTrace();
finally
try
dos close();
dis close();
s close();
catch (IOException e)
e printStackTrace();
*/
private class TFListener implements ActionListener
public void actionPerformed(ActionEvent e)
String str = tfTxt getText() trim();
//taContent setText(str);
tfTxt setText( );
try
//System out println(s);
dos writeUTF(str);
dos flush();
//dos close();
catch (IOException e )
e printStackTrace();
private class RecvThread implements Runnable
public void run()
try
while(bConnected)
String str = dis readUTF();
//System out println(str);
taContent setText(taContent getText() + str + \\n );
catch (SocketException e)
System out println( 退出了 bye! );
catch (EOFException e)
System out println( 推出了 bye bye! );
catch (IOException e)
e printStackTrace();
cha138/Article/program/Java/hx/201311/25933
相关参考