插座游戏

//这是一个聊天程序。只需在ECLIPSE中运行Client.java。连接是:localhost

//服务器代码,

打包消息;

导入Java . io . *;

导入Java . net . *;

导入Java . util . *;

公共类服务器{

公共静态void main(String[] args)引发异常{

System.out.print("服务器");

server socket socket = new server socket(8888);

向量v =新向量();

while(true){

socket sk = socket . accept();

data inputstream in = new data inputstream(sk . getinputstream());

data output stream out = new data output stream(sk . get output stream());

v . add(sk);

新服务器线程(in,v)。start();

}

}

}

//ServerThread.java代码

打包消息;

导入Java . net . *;

导入Java . io . *;

导入Java . util . *;

公共类ServerThread扩展线程{

DataInputStream in

矢量所有;

公共服务器线程(DataInputStream in,Vector v){

this.in = in

this . all = v;

}

公共无效运行()

{

while(真)

{

尝试{

string s 1 = in . read utf();

for(int I = 0;我& ltall . size();i++)

{

object obj = all . get(I);

Socket Socket =(Socket)obj;

data output stream out = new data output stream(socket . get output stream());

out . write utf(s 1);

System.out.print(一);

out . flush();

}

System.out.print("消息发送完毕!");

} catch(Exception e){ e . printstacktrace();};

}

}

}

//ClientFrame.java代码

打包消息;

导入Java . awt . *;

导入Java . awt . event . *;

导入javax . swing . *;

导入Java . net . *;

导入Java . io . *;

公共类ClientFrame扩展JFrame实现ActionListener{

JButton b 1 = new JButton(" SendMessage ");

JButton b2=new JButton("链接服务器");

JTextField t 1 = new JTextField(20);

JTextField T2 = new JTextField(20);

JLabel l=new JLabel("输入服务器名:");

JTextArea area = new JTextArea(10,20);

JPanel p 1 = new JPanel();

JPanel p2 = new JPanel();

JPanel P3 = new JPanel();

JPanel P4 = new JPanel();

插座插座;

公共客户端框架()

{

this.getContentPane()。添加(p 1);

p2.add(新JScrollPane(area));

P3 . add(t 1);

P3 . add(b 1);

P4 . add(l);

P4 . add(T2);

P4 . add(B2);

p2 . set layout(new flow layout());

P3 . set layout(new flow layout());

P4 . set layout(new FlowLayout());

p 1 . set layout(new BorderLayout());

p1.add("北",p2);

p1.add("中心",P3);

p1.add("南",P4);

b 1 . addactionlistener(this);

B2 . addactionlistener(this);

this . pack();

show();

}

公共无效操作已执行(操作事件e)

{

if(e.getActionCommand()。equals("链接服务器"))

{

尝试{

socket=new Socket(t2.getText(),8888);

B2 . set enabled(false);

joptionpane . showmessagedialog(this,“连接成功”);

data inputstream in = new data inputstream(socket . getinputstream());

新的ClientThread(在,区域中)。start();

}

catch(异常e1){

joptionpane . showmessagedialog(this,“连接错误”);

e 1 . printstacktrace();};

}

else if(e.getActionCommand()。equals("SendMessage "))

{

尝试{

data output stream out = new data output stream(socket . get output stream());

out . write utf(t 1 . gettext());

t 1 . settext(" ");

}catch(异常e 1){ e 1 . printstacktrace();};

}

}

}

//ClientThread.java代码

打包消息;

导入Java . net . *;

导入Java . io . *;

导入javax . swing . *;

公共类ClientThread扩展线程{

DataInputStream in

JTextArea地区;

public client thread(data inputstream in,JTextArea area){

this.in = in

this.area = area

}

公共无效运行()

{

while(true){

尝试{

string s = in . read utf();

area.append

}

catch(异常e){ e . printstacktrace();};

}

}

}

//Client.java代码

打包消息;

公共类客户端{

/**

* @param args

*/

公共静态void main(String[] args) {

new client frame();

}

}

//每一段代码都是一个类,所以不要放在一个文件里。运行Client.java。

祝你好运!