C# Socket 的客户端编程问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 01:25:56
在写客户端
有几个问题:
我开了两个线程,用同一个socket,一个线程用来接收,一个线程用来发送,有问题吗?
如果有问题的话如何解决?
谢谢了哈
SeaShadow说ip要设置对?
什么意思?
我这里用的是同一个socket对象,这个socket连上服务器后,开辟了两个线程,一个用来发送,一个用来接收,我做的是客户端
发送信息到服务器,接收的也是从服务器过来的信息,也就是说同时向服务器发送信息和从服务器接收信息
谢谢了

楼下有位兄弟给出了代码
其实我也知道这个
相信那位兄弟没有看明白我的描述
我的意思是有两个线程,一个用来发送,一个用来接收,用的是同一个Socket。。。
郁闷了,百度知道不能加重颜色。。。

原来是双线程访问同一资源的问题,我理解错了:(
由于Sockect本身是独占资源,并不支持双工(发送的时候不能接收,接受的时候不能发送)。所以我们需要为着两个线程进行排队,然后依次调度来进行访问。这里有三个角色,调度器,发送线程,接受线程

调度器:
负责按照指定的策略调度两个线程的访问,比如交替进行;记录状态,异常等信息。最基本的情况下,对外提供两个方法,如果支持异步的话还需要上面两方法的异步版和两个事件:void Send(Byte[] content),负责发送数据;Byte[] Recieve(),负责接收数据;Event RecieveComplete,表示接收完成;Event SendComplete表示发送完成。调度器把发送和接收请求分别放入队列,依次执行就可以了。这部分异步逻辑还是比较简单的,看楼主的技术水平应该可以搞定,我就不班门弄斧了。

发送线程:
调用调度器的Send方法

接受线程:
调用调度器的Recieve方法

简单的说,就是把并行操作变成串行,这样就不会有冲突发生了!

你的思路没问题..主要是IP要设置对.还有就是编程的是有要注意点就OK了..

你的思路没问题..主要是IP要设置对.还有就是编程的是有要注意点就OK了..

理论上没什么问题 建议你做一下 遇到问题再发上来问
附上你的代码就更好了