问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

帮我把单线程的程序改成多线程JAVA,急!

发布网友 发布时间:2023-08-18 00:10

我来回答

1个回答

热心网友 时间:2024-01-25 03:00

自定义一个线程类或者一个Runnable类。。
并定义一个socket类型的属性。。
构造方法接受一个socket类型的参数。。对socket属性用他来初始化。。

然后这个地方。。

Client=server.accept( );
Thread thread=new Thread(Client);//把获得的客户端socket穿进去。。
thread.start();

然后在你自定义的线程或者Runnable类里面的run方法写上你想用那个socket做的事就行了。。这样与每个客户端的通信即socket都是一个单独的线程了。。

给你改了下哈。。可能不对哈。。反正你按照那个思路改的话肯定没问题的。。
package java07_25;

import java.awt.*;
import java.awt.event.*;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class SocketServer extends Frame implements ActionListener {
Label label = new Label("输入聊天信息,按回车发送!");

TextField tf = new TextField(20);

TextArea ta = new TextArea();

Panel panel = new Panel();

ServerSocket server;

Socket Client;

InputStream DataIn;

OutputStream DataOut;

public SocketServer() {
super("服务器 ");
setSize(380, 300);
panel.add(label);
panel.add(tf);

tf.addActionListener(this);
add("North", panel);
add("Center", ta);
ta.setBackground(Color.black);
ta.setForeground(Color.yellow);

addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
show();
try {
server = new ServerSocket(5000);
while (true) {

Client = server.accept();
Thread thread = new Thread(new SSocket(Client));
thread.start();

}
} catch (IOException ioe) {
}

}

public static void main(String args[]) {
new SocketServer();
}

public void actionPerformed(ActionEvent e) {

try {
String str = new String(tf.getText());
byte buf[] = str.getBytes();
tf.setText(" ");
DataOut.write(buf);
ta.append("服务器说:" + str + "\n");
} catch (IOException ioe) {
}

}

class SSocket implements Runnable {

Socket client;

public SSocket(Socket client) {
this.client = client;
}

public void run() {
DataInputStream input;
while (true) {
try {
ta.append("已经和客户机连接:" + client.getInetAddress()
+ client.getInetAddress().getHostName() + "\n\n");
DataIn = client.getInputStream();
DataOut = client.getOutputStream();
byte buff[] = new byte[512];
DataIn.read(buff);
String str = new String(buff);
ta.append("客户机说:" + str + "\n");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
中美有什么经济冲突 杨凌衡水实验中学高中学费是多少 蒂芙尼珍珠项链怎么清洗和保养? tiffany&co 的缺点 如何保养蒂芙尼的项链? tiffany保养要多久时间 Tiffany珠宝需要多长时间保养? 人为什么活着,怎样活着都是无憾!! 孩子犟的不行家长怎么教育 有什么比较好用的游戏视频录制软件? 适用于Windows的10个好用的游戏录制软件 生日蛋糕可以在冰箱里放几天 梦见老母鸡特别乖 领导让换工作,要怎么拒绝呢? 那首诗中有里外不是人五个字 杂志锁屏时间长了手机会卡吗 一错再错还有以后还会犯错什么意思 孕妇可以吃金九脊吗 孕妇能吃黄金瓜吗孕妇是允许吃黄金瓜吗 吹萨克斯是什么骂人方言 三大流氓乐器是什么 华为p30怎么设置屏幕分辨率 保险越多 ...资本化的后续支出计入固定资产成本,是使账面价值增加吗?为什么?_百... 入账价值算不算可资本化收入 《知否》:为什么要安排墨兰第一胎就流产并且之后几年都没孩子?_百度知 ... 请问香港管理交通的部门是什么部门,具体怎么联系 广东联康威尔思国际酒店的经营服务范围 兴宁联康威尔思国际酒店举办婚礼贵不贵 如何关闭的安全保护? 强制重启的ipad可以买吗 仓鼠为什么一直吃 我买回家的时候一直啃笼子 然后我给它往食盆里... 评书机怎么存歌曲进去 古代管理阴间的是谁? 西游记:八戒没吃成人参果,竟编瞎话激怒悟空,逼着悟空偷人参果 40到50岁左右年龄的女士,用哪种护肤产品可以有效地抗衰老? 执行过程中二次流派后法院裁定以物抵债的价格能否抵扣骗取贷款罪_百 ... 小新pad12.7重量 今天开电脑显示windows系统是盗版,要激活,用了激活工具没用,今天内必... 怎么看小藏獒品种好坏 怎样挑选优质的小藏獒 怎样挑选优质的小藏獒 oppo平板如何设置屏幕自动黑屏 太阳能热水器和太阳能电池是不是可以无限度的用?也就是说合理使用的话... 阳光普照的优美的句子 湖南艾科瑞生物工程有限公司电话是多少? 艾科瑞是国企还是私企 用人单位能打电话给学校查学籍吗 畸形的汉服运动,如何脱离初衷? 铁甲小保少儿长期百万医疗险的利弊是什么? 太平洋人寿爱享今生(少儿版)两全险利弊是什么? 少儿终身重疾险的利弊是什么?保障到几岁?