插座游戏
//服务器代码,
打包消息;
导入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。
祝你好运!