解决方案 »
- Activator.CreateInstance如何传入函数指针
- 网页乱码问题,请前辈指点下方向,小弟先感谢了!
- “使用 AsyncCallback 委托结束异步操作”的困惑
- 各位大侠,asp.net和.net是什么关系呀?
- 怎么上传上去出错呀,请各位帮帮忙,在线等。
- VS2005到底出来了还是没出来?D版市场卖的都是2003。许多人说出来了。
- 请问在VS中如何把每个用户控件都编译一个dll??
- 如何在datagrid中加入一列让它做为checkBox进行选择?谢谢!!
- 请问如何把WebService中间层的自定义异常传到客户端, 一定给分,请放心.
- 怎么写象ConnectionState.Open这样的结构啊?
- 关于Winform的最大化最小化问题???
- 用什么技术实现共享桌面,求大侠指教
你可以看下这个 写的不错.有例子
{
this.socket = serverSocket.Accept();//(4)Create a new Socket for a newly created connection
appendtextBoxLog(this.socket.RemoteEndPoint.ToString()+" 连接成功");
Thread thread = new Thread(new ThreadStart(start));
thread.IsBackground = true;
thread.Start();
}
是不是你的原因
看下里面的那个例子
这位大神,其实我是有2个的,你可能每注意,一个是serverSocket 一个和socket
不过这位大婶,刚次看另一位大婶给的启发,突然发现问题所在了,我在循环里每次循环会创建一个新的ServerSocket,就造成这种后果了,应该是第一次创建的serverSocket把之后创建的ServerSocket端口阻塞了,谢谢大婶.
这位大神,其实我是有2个的,你可能每注意,一个是serverSocket 一个和socket
哦哦 是有两个 没注意 那你就打断点调试吧 看看问题出在那里
这位大神,您仔细看看代码,其实,客户端请求的Socket搞到另一个类里以后,所以这个Socket引用也就没用了,但是根据您的启发,我突然发信我把aceept的服务器主ServerSocket放到循环里了,每次都会新创建一个服务器ServerSocket,所以第一次创建的accept的socket就把后面创建的端口给堵塞了.我是这样理解的.谢谢大神的指教
不过这位大婶,刚次看另一位大婶给的启发,突然发现问题所在了,我在循环里每次循环会创建一个新的ServerSocket,就造成这种后果了,应该是第一次创建的serverSocket把之后创建的ServerSocket端口阻塞了,谢谢大婶.
其实 你可以把服务端的监听套接字声明为服务端类的一个私有变量而不是把客户端的通信套接字声明为私有变量
不过这位大婶,刚次看另一位大婶给的启发,突然发现问题所在了,我在循环里每次循环会创建一个新的ServerSocket,就造成这种后果了,应该是第一次创建的serverSocket把之后创建的ServerSocket端口阻塞了,谢谢大婶.
其实 你可以把服务端的监听套接字声明为服务端类的一个私有变量而不是把客户端的通信套接字声明为私有变量
那个,刚才理解错了,貌似问题还是没解决,服务器那个Socket的确只创建了一个,客户端的请求进来的Socket还是只能接受第一次发的消息,第二次就不行了....
不过这位大婶,刚次看另一位大婶给的启发,突然发现问题所在了,我在循环里每次循环会创建一个新的ServerSocket,就造成这种后果了,应该是第一次创建的serverSocket把之后创建的ServerSocket端口阻塞了,谢谢大婶.
其实 你可以把服务端的监听套接字声明为服务端类的一个私有变量而不是把客户端的通信套接字声明为私有变量
那个,刚才理解错了,貌似问题还是没解决,服务器那个Socket的确只创建了一个,客户端的请求进来的Socket还是只能接受第一次发的消息,第二次就不行了....
你把你的serverSoeket 放在启动按钮的事件里面创建 不要放在监听线程里面创建 试试
private void start()
{
SocketThreadClass stc = new SocketThreadClass(this.socket,this.textBoxLog);
}即使重用this.socket这个变量,实际数据接收是在一个私有类里面,因此那个外部的变量如何被重用都无关紧要了。
但是再仔细看这个start方法,存在一个很容易被忽略的错误,那就是对象的作用域范围,这个函数执行完毕后,这个stc 临时对象离开了那个作用域就直接可以被GC回收了,既然对象可以被回收,那么对象内部再执行的数据接收方法自然就没戏了。你通过对象来封装处理,就要保持对象引用以免被GC回收才行。PS:都没解决问题居然结贴了,我要是不负责的话,可以不回复了。
是的 我也觉得 他在初始化的时候 一直在用while循环接受客户端发送过来的消息