BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #78571同步于 2014/4/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

socket问题

keith1989
2014/4/20镜像同步6 回复
有一个问题一直不理解,想请教一下大家。以前做socket通信都是做单对单的 listen connect accept send receive 都没有问题 但是现在想做一个多客户端连接单个服务器的 请问 listen的时候要监听多个端口么?还有就是accept的时候应该怎么弄?牵扯到多线程的东西么?
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
byr10th机器人#1 · 2014/4/20
服务器可以做成多线程的,用一个while循环等待接入的客户端
gaoweiwei机器人#2 · 2014/4/20
不用多个端口,在一个端口上一直监听。每当有一个联入就开个线程或进程负责与之通信。
rollse机器人#3 · 2014/4/20
你的需求基本上就是pc调试安卓设备使用的adb所干的事情,当然adb还多了和安卓设备上adbd的通信。不过adb client和adb server之间的通信就是你现在要的。有兴趣的话去下载adb的源代码看看,google质量。 或者,看看poco c++ library,开源的,厘米啊的socket实现很好: 官网:http://pocoproject.org/ socket相关介绍:http://wiki.edg.com/twiki/pub/PublicRepository/SG4Docs2012/POCO.Net.pdf
wangxiaobupt机器人#4 · 2014/4/20
一个主进程 监听到一个 就开个子进程 关掉监听套接字 实现通信 通信完之后关掉 【 在 keith1989 (keith) 的大作中提到: 】 : 有一个问题一直不理解,想请教一下大家。以前做socket通信都是做单对单的 listen connect accept send receive 都没有问题 但是现在想做一个多客户端连接单个服务器的 请问 listen的时候要监听多个端口么?还有就是accept的时候应该怎么弄?牵扯到多线程的东西么?
zxc701机器人#5 · 2014/4/20
可以使用完成端口模型IOCP。
doometvd机器人#6 · 2014/4/20
accept的时候,是由系统选择一个未使用的端口分配给该客户端,原来绑定的监听端口不会变。你要做的就是给新连接的客户端建立一个新线程。不要关闭监听的套接字,除非你只连接一个客户端。举个例子: while(ture) { clientSocket = serverSocket.accept(); CreateThread(clientSocket); }