为了账号安全,请及时绑定邮箱和手机立即绑定

服务器线程

按照老师的做法,为什么我启动了服务端,和客户端,服务器端显示了客户端连接1,也会立即显示客户端连接2、http://img1.sycdn.imooc.com//5666cffe0001e96803800093.jpg

public class Server {
public static void main(String[] args){
try {
//1.创建服务器端socket,并指定端口号监听
ServerSocket serversocket = new ServerSocket(8888);
//2.开始监听客户端请求
Socket socket = null;
System.out.println("***服务器即将启动,等待客户端的连接***");
int count =0;
while(true){
socket = serversocket.accept();
ServerThread st = new ServerThread(socket);
st.start();
count++;
System.out.println("客户端连接数:"+count);
//InetAddress address = socket.getInetAddress();
//System.out.println("来自客户端地址:"+address.getHostAddress());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


正在回答

2 回答

肯定是你对着视频敲代码的时候敲错了。你检查下一下几个地方:

  1. 定义的表示客户端数量的变量初始化是不是0

  2. 你的System.out.println()语句是不是在accept()之前

    如果不是这两个地方有问题,你把serverSocket的代码贴上来,我给你看看

0 回复 有任何疑惑可以回复我~
#1

Kristchen 提问者

贴上去了
2015-12-08 回复 有任何疑惑可以回复我~
#2

sxian_wang 回复 Kristchen 提问者

服务端的代码没有问题。输出客户端的语句执行了两次,也就是socket端口肯定收到了两次请求。而第二次请求没有包含任何消息。所以可能是客户端的代码出问题了,你检查检查,如果发现不了可以贴出来一起研究。 这门课的demo我也实现过,是没有问题的。
2015-12-08 回复 有任何疑惑可以回复我~
#3

Kristchen 提问者 回复 sxian_wang

发现问题了,我在客户端收到来自服务器端的响应时加了一个socket.shutdownInput()方法,我觉得需要关闭这个流资源,才导致出现了这个问题,难道不应该用这个方法吗?而且为什么用了这个方法服务器端就会收到两次请求
2015-12-09 回复 有任何疑惑可以回复我~
#4

sxian_wang 回复 Kristchen 提问者

13260168081@163.com,我在我的机器上调试下。
2015-12-09 回复 有任何疑惑可以回复我~
#5

sxian_wang 回复 sxian_wang

我百度了下shutdownInput(),也看了它的源码。它的作用就是关闭一个socket的输入流,不会产生网络相关的操作。我把课程的代码又翻出来撸了半天,你的这个问题我还是没复现出来。。。你可以把你的代码发到我上面的那个邮箱
2015-12-09 回复 有任何疑惑可以回复我~
#6

Kristchen 提问者

非常感谢!
2015-12-10 回复 有任何疑惑可以回复我~
查看4条回复

http://img1.sycdn.imooc.com//5666f3280001fd0506600314.jpg我觉得是线程问题吧

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

服务器线程

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信