java的socket多线程通讯问题
@andy liu老师,谢谢您,我还想麻烦您一下,就是帮我解释一下下面这段代码
public void start() {
try {
ss=new ServerSocket(8888);//锁定一个TCP端口
} catch (IOException e) {
// TODO Auto-generated catch block
ta1.append("端口正在使用……"+"n");
System.exit(0);//退出程序
}
boo=true;
ta1.append("服务器启动了"+"n");
//ta2.requestFocusInWindow();
try {
while(boo){//不断循环客户端的请求连接
Socket s=ss.accept();
Client c=new Client(s);
new Thread(c).start();
clients.add(c);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(ss!=null){
ss.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
我不懂为什么还要定义Client c=new Client(s);还有这个Client跟下面定义的类有啥关系吗?
private class Client implements Runnable {
//定义成员变量
private Socket s;
private boolean bconnect;
public Client(Socket s){
//初始化输入输出流
try {
this.s=s;
dis=new DataInputStream(s.getInputStream());
dos=new DataOutputStream(s.getOutputStream());
bconnect=true;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
就是在start()方法里已经定义有了Socket s了,为什么Client这个类里面还定义有另外一个Socket s,而且也没有赋值,我觉得这个类中的构造方法是实例化两个输入输出流对吗?还望刘老师不吝赐教!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
每个accept后的socket都不一样的,得放在client的环境里面,否则访问的都是同一个socket对象。