中易网

怎么:实现两台计算机之间交互式数据通信的源代码。以窗口实现交互的 java

答案:1  悬赏:20  
解决时间 2021-03-22 09:03
怎么:实现两台计算机之间交互式数据通信的源代码。以窗口实现交互的 java
最佳答案
一个简单的聊天程序
参考一下;

//客户端的
import java.io.*;
import java.net.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ChatClient {
public static void main(String[] args) {
ChatClient cc=new ChatClient();
cc.receive();
}
JTextField jtf;
JTextArea jta;
Socket s;
PrintWriter out;
BufferedReader in;
public ChatClient(){
JFrame frame=new JFrame("ChatClient");
frame.setSize(400,300);
jta=new JTextArea();
jta.setEditable(false);
jtf=new JTextField();
jtf.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent arg0) {
send();
}

});
frame.getContentPane().add(new JScrollPane(jta));
frame.getContentPane().add(jtf,"South");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

try {
s=new Socket("127.0.0.1",9000);
in=new BufferedReader(new InputStreamReader(s.getInputStream()));
out=new PrintWriter(s.getOutputStream());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

public void receive(){
while(true){
try {
String text=in.readLine();
this.jta.append(text+"\n");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
}
}
}
public void send(){
String text=this.jtf.getText();
this.jtf.setText("");
out.println(text);
out.flush();
}

}

//服务器端的
import java.net.*;
import java.io.*;
import java.util.*;
public class ChatServer {
public static void main(String[] args) throws Exception {
ServerSocket ss=new ServerSocket(9000);
List list=new ArrayList();
while(true){
Socket s=ss.accept();
list.add(s);
Thread t=new ServerThread(s,list);
t.start();
}
}

}
class ServerThread extends Thread{
Socket s;
List list;
BufferedReader in;
PrintWriter out;
public ServerThread(Socket s, List list) {
this.s = s;
this.list = list;
try {
in=new BufferedReader(new InputStreamReader(s.getInputStream()));
out=new PrintWriter(s.getOutputStream());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
public void run(){
while(true){
try {
String str=in.readLine();

if (str==null) return;
Iterator it=list.iterator();
while(it.hasNext()){
Socket socket=(Socket)(it.next());
PrintWriter o=new PrintWriter(socket.getOutputStream());
o.println(str);
o.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
return;
}
}
}
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
卡萨帝三门冰箱价格是多少
军中茅台酒52度多少钱一瓶
义乌利星汽车有限公司这个地址在什么地方,我
起亚K5卡仕达导航有方向盘控制学习功能吗
UPS电源的销售
发膜,焗油膏,护发素,修复蜜 这几个有什么
mysql 数据库循环读的问题
南通恒盛针织机械厂地址在什么地方,想过去办
火龍果男人吃了好麼
dnf起源版本觉醒任务在哪个地下城
京东普通快递从武汉发货至常德要几天 8.16号
想做个男性健康检查
小孩多大开始刷牙合适?宝宝已经3岁了,想问
泉州人的宗教是什么
艾斯平德森认为西方福利国家有哪些体制
推荐资讯
中国十大品牌名牌室内装潢是哪些装修装饰公司
谁能给我写一个狼羊草的C++程序啊?最好有编
有句歌词是,,像被人在身后狠狠刺中了心,,我心
精仿苹果6卡爆了反应又慢怎么回事?
选购集成灶的注意事项有哪些?
你们知道海贼王中什么叫无上大快到,21快刀,
重庆早点培训哪家靠谱?重庆华飞公司的早点培
哪个牌子的休闲食品最好吃,价格还不贵?
excel 怎么快速查找出一整列的所有中文字符?
六个月宝宝晚上睡觉不吃奶好还是吃奶好
魏晋时期的九品中正制是什么?
台州市三门县卫生和计划生育局地址有知道的么
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?