首页 > 代码库 > socket基础实例(一个服务端对应一个客户端情形)
socket基础实例(一个服务端对应一个客户端情形)
服务端处理1个客户端的例子
运行结果:
执行服务端进程:
[root@localhost single_link]# ./server [server]: begin[server]: loop......[server]: client[127.0.0.138528] is connected[server]: recv from client[127.0.0.1:38528]: data=http://www.mamicode.com/12345, len=1024[server]: send to client[127.0.0.1:38528]:12345, retvalue=http://www.mamicode.com/1024
执行第1个客户端进程,
[root@localhost single_link]# ./client1 [client]: begin[client]: connected to server:127.0.0.1:5555[client]: loop......: input your word:>12345[client]: send to server: data=12345, retval=1024[client]: recv from server: data=http://www.mamicode.com/12345, len=1024[client]: loop......: input your word:>
执行第2个客户端进程的时候,
[root@localhost single_link]# ./client2[client]: begin[client]: connected to server:127.0.0.1:5555[client]: loop......: input your word:>1341[client]: send to server: data=1341, retval=1024
案例总结:
该实例验证的是服务端:客户端=1:1的情形,
从服务端程序逻辑上看,第1个while用于属于accept/connect while循环,完成与client的连接操作,内部的while属于recv/send循环操作,完成与client的数据传输操作。
如果第client1不关闭socket,服务端的recv/send while就不会退出,
所以当第client2连接到server的时候,connec和send都是成功的,但因为服务端正处于与client1的交互中而无法响应send操作,所以client2会block在这里,等待server的数据返回,
这时如题第1个client关闭了,server与client2
socket基础实例(一个服务端对应一个客户端情形)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。