你应用的是否是阻塞模式,因为该模式 Receive 会等到接收到请求后才会继续执行,否则就一直等待
解决方案 »
- ORA-12154: TNS: 无法解析指定的连接标识符
- 请问各位大侠,在C#中C#中的winsock控件对数据接收后,如何存储到Sql Server2000中去
- 大家对UCML怎么看?
- ASP.NET
- C#调用API
- 新学.xml文件。问一下。如何在指定的位置建立一个.xml文件
- 怎么样在自定义控件中使用session且session值不从页面传进来
- 新建office解决方案遇到的问题
- 正则匹配问题
- 编译器提示 : 并非所有的代码路径都返回值,可我没有看出来哪儿没有返回,帮忙?
- winform中如何让获取listBox1中被选中的文本值。。。急。。。
- 窗口切换是如何让控件获得焦点的时候响应事件?
没有特别的设置,好像看到说accept函数是阻塞模式的,
他的执行会造成程序的阻塞。
这是我参照课本和网上的例子和文档写的程序,
基本所有的代码都在这了,
里面的端口号写错了,
其实都是1111的。
我打开服务端的监听,
本来该有的在listbox中的提示一句只是偶尔会有,
大部分时间直接卡死,
然后客户端连接也连接不上,
客户端程序走到 this.sock.Connect(this.myserver);
报错,
大概就是连接不上的意思。
{
.....
.....
//无限循环都加上这两句。
Thread.Sleep(50);
Application.DoEvents();
}
但是不是很理解。
{
.....
.....
//无限循环都加上这两句。
Thread.Sleep(50);
Application.DoEvents();
}
{
.....
.....
//无限循环都加上这两句。
Thread.Sleep(50);
Application.DoEvents();
}
还有报错信息具体是什么?
{
.....
.....
//无限循环都加上这两句。
Thread.Sleep(50);
Application.DoEvents();
}
还有报错信息具体是什么?
直接卡死,
在中间加
message.show()来标记,
有时候能输出,有时候输出不了。
而且一般加上输出标记,程序就能执行的多点,
比如,不加输出标记,一般listbox中都不会出现 开始监听,
但是加上输出标记,有时候就能输出。
不知道为什么。
while (flag&&this.resock.Connected)//先判断是否连接了再接受数据。。你放外面。。没用
{
Byte[] r_data = new Byte[64];
int recvCount=this.resock.Receive(r_data, r_data.Length, 0);//先判断是否接受到了数据再进行处理
if(recvCount>0)
{
string str = System.Text.Encoding.BigEndianUnicode.GetString(r_data);
string temp=((IPEndPoint)resock.RemoteEndPoint).Address.ToString();
this.listBox1.Items.Add(temp+"\n");
}
}
直接卡死,
在中间加
message.show()来标记,
有时候能输出,有时候输出不了。
而且一般加上输出标记,程序就能执行的多点,
比如,不加输出标记,一般listbox中都不会出现 开始监听,
但是加上输出标记,有时候就能输出。
不知道为什么。
while (flag&&this.resock.Connected)//先判断是否连接了再接受数据。。你放外面。。没用
{
Byte[] r_data = new Byte[64];
int recvCount=this.resock.Receive(r_data, r_data.Length, 0);//先判断是否接受到了数据再进行处理
if(recvCount>0)
{
string str = System.Text.Encoding.BigEndianUnicode.GetString(r_data);
string temp=((IPEndPoint)resock.RemoteEndPoint).Address.ToString();
this.listBox1.Items.Add(temp+"\n");
}
}
客户湍用同步,容易实现,性能也不错
this.sesock.Listen(10);
是把socket做到一个 list中然后检测其中有连接的进行处理???
参考
问题主要是ACCEPT方法的,
把ACCEPT方法,放到targett函数中,
让他在子线程中跑,
程序就没问题了。