大家好,我想编两个多线程TCP/IP协议的程序。在服务器程序中,服务器用套接字传送数据给客户机,并能接收客户机传来的数据;
在客户机程序中,客户机也能传送数据给服务器,并能接收服务器传来的数据。我想问的问题是:因为服务器和客户机之间工作是异步的,
1.是不是存在服务器和客户机同时发送数据的情况?如果是,应该如何编写程序处理此种情况?
2.我是不是应在服务器和客户机程序中开辟两个线程,一个作为接收数据,另一个作为发送数据,并分别使用两个套接字?

解决方案 »

  1.   

    1.避免出现服务器和客户机同时发送数据的情况。服务器是先接收再返回信息。也就是客户端与服务器直接是问请求与回应的方式处理。
    2.上述方法套接字两边各一个socket就可以啊。
    服务器是不可能知道客户端的ip和端口的。所以必须客户端先访问服务器,服务器获得到这个socket才能给客户端回信息。
      

  2.   

    服务端的流程是这样:server建立监听,当监听到连接后,接受之,这个时候就产生了新的socket,用来收消息和向客户端返回信息。
    如果是你说得情况那就应该是双服务器直接的通讯。两边提前都知道对方的ip和端口。
      
      

  3.   

    叫大哥不敢当,小弟也刚工作一年。正常的流程是
    服务端:server建立监听,当监听到连接后,接受之,这个时候就产生了新的socket,用来收消息和向客户端返回信息。
    客户端:事先知道服务端的ip和端口,new一个socket后直接去连服务器,连接成功后这个socket就可以发送并接受服务端返回的信息了
    两者必然是请求和应答的方式。
    http://download.csdn.net/source/2594338
    看看这个吧,个人认为是c#通讯讲的最好的了 。