import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import javax.swing.*;
import com.kettas.common.*;
public class Client {
JFrame f;
JTextArea jta;
JTextField jtf;
JComboBox jcb;
JScrollPane jsp;
JPanel jp;
Socket s;
BufferedReader in;
String name;
public void gui() {
System.out.println("请输入您的名字:");
name = SystemIn.readString();
f = new JFrame(name);
f.setSize(400, 300);
jta = new JTextArea();
jsp = new JScrollPane(jta);
jtf = new JTextField(30);
jcb = new JComboBox();
jcb.addItem("all");
jp = new JPanel();
jp.add(jcb);
jp.add(jtf);
f.add(jp, "South");
f.add(jsp);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jta.setEditable(false);
try {
s = new Socket("127.0.0.1", 3308);
in = new BufferedReader(new InputStreamReader(s
.getInputStream()));
final PrintWriter pw = new PrintWriter(s.getOutputStream());
String s=in.readLine();//读取有多少人在线,目的是通知目前客户现在有哪些人在线
String[] ss=s.split(":");
// System.out.println("&&&&&&&&&&&&&&&&&&"+ss.length);
for(int i=1;i<ss.length;i++){//从这可以得到目前有多少人在线,通知新上线的
jcb.addItem(ss[i]);
//System.out.print(sss+"****************");
jta.append(ss[i]+"上线了\n");
}
pw.println(name);//发送给服务器目前登陆的客户名字,目的是让服务器能够通知其他客户
pw.flush();
jtf.addActionListener(new ActionListener() {//监听器设置
public void actionPerformed(ActionEvent arg0) {
String text = jtf.getText();
if (!jcb.getSelectedItem().equals("all")){//点对点
pw.println("1:" + jcb.getSelectedItem() + ":" + text);
pw.flush();}
else if(jcb.getSelectedItem().equals("all")){//群发
pw.println("2:" + text);
pw.flush();}
jtf.setText("");
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
public void receive() {//收信息的协议,1为上线,2为下线,其他为正常
try {
while (true) {
String s = in.readLine();
if (s == null){
return;
}
String ss[]=s.split(":");
if(ss[0].equals("1")){
jcb.addItem(ss[1]);
jta.append(ss[1]+"上线了\n");
}else if(ss[0].equals("2")){
jcb.removeItem(ss[1]);
jta.append(ss[1]+"下线了\n");
}
else
jta.append(s + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String args[]){
Client c=new Client();
c.gui();
c.receive();
}
}
p2p.rar_java p2p_点对点_点对点 java_点对点通信
版权申诉
112 浏览量
2022-09-23
23:57:38
上传
评论
收藏 3KB RAR 举报
小贝德罗
- 粉丝: 69
- 资源: 1万+