同学您好,这个问题我分开解答哈!①单个用户与单个服务器通信采用Socket进行连接,用户方面的流程是:1新建套接字Socket s;2确定服务器IP地址和端口号 addr = 192168112 port = 8080;3对本机地址进行显式或隐式绑定(一般采用隐式绑定故这步可以忽略)4开启与服务器的连接connect(s,addr);5进行数据交互传输 send recv;6通信结束 关闭套接字closesocket(s);
服务器方面的流程是:1新建套接字Socket s;2确定本地IP和端口号(不能隐式绑定)addr = 192168112 port = 8080;3对本地IP和端口进行绑定bind(s,addr);4对端口进行监听listen(s);5接收一个连接 newsock = accept(s);6进行数据交互传输 send recv;7通信结束 关闭套接字closesocket(s)。
②单个服务器与多个用户的通信连接,用户端与①中流程相同,服务器端第5步接收了一个连接之后开始不同。服务器在接收了一个连接之后,便新建一个套接字newsock,此时要开启一个子线程来负责处理与该用户机的数据传输,而主线程继续监听端口创建新的子线程来与多个用户进行连接。C下可以采用createThread函数,
CreateThread( NULL,0,chat, //子线程函数入口
&newsock, //传给子线程的参数
0, &Tid);然后在chat函数中进行recv和send即可几个思路:
1、将220的IP地址加入到240的/etc/hosts文件中,看看从220上telnet 240能否变快,变快就解决了
2、我猜想,220和240应该属于不同的网段,需要通过路由器实现互通,检查220上的网关和路由设置,是否指向了不正确的IP;可以在240上使用traceroute检查到220的路由,看看最后1级网关是否与240上的设置一致,如果不一致将220的网关指向该地址
3、240所在网段应该还有其他主机,从220上traceroute其中一个活跃主机的IP,如果仍然慢那么就可以完全确认是路由器的问题(包括设置不当,迂回,循环等),而不是220的设置问题
3、220和240之间应至少存在2级路由器,是这些路由器上的路由关系有问题,那么需要从220的出口网关开始逐级登录检查,检查方法就是从这些路由器上检查到240的路由,是否与240的回程路由一致。当然,你必须有登录路由器的权限,否则应找网络管理员协助。将你的上述证明方法和结论告诉他,让他来改即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)