写了个S/C模型的代码,C端是用C#写的,代码如下:
private void button2_Click(object sender, System.EventArgs e)//连接WHClient
{
string ClientMachine = textBox3.Text;
IPAddress remoteIPAddress = new IPAddress(0);
remoteIPAddress = IPAddress.Parse(ClientMachine);
ConnectWHClient.Connect(remoteIPAddress,2000);//真正关键的连接语句。
textBox4.Text = " ok";
}
private void button6_Click(object sender, System.EventArgs e)//断开
{
ConnectWHClient.Close();
textBox4.Text = "Close";
}
S端是用API写的,代码如下:
WHCSocketSend=socket(AF_INET,SOCK_STREAM,0)
setsockopt(WHCSocketSend,SOL_SOCKET,SO_REUSEADDR,(const char*)&bDontLinger,sizeof(BOOL));
WSAAsyncSelect(WHCSocketSend,NULL,NULL,FD_ACCEPT|FD_CLOSE|FD_READ);
if( WSAAsyncSelect!=0 )
{
switch(ConnectlParam)
{
case FD_ACCEPT:
accept(WHCSocketSend,INADDR_ANY,NULL);
break;
case FD_CLOSE:
closesocket(WHCSocketSend);
break;
}
}
现在遇到的问题是,连接没问题,但每次断开后S端总是在出现CLOSE_WATE就没反应了,我查过网上的很多文章,说加了“setsockopt(WHCSocketSend,SOL_SOCKET,SO_REUSEADDR,(const char*)&bDontLinger,sizeof(BOOL));”这句应该可以解决,但文章中所说的S端和C端都用的是API,而我C端用的是C#,好像在.NET Framenwork类库中能关闭TCP连接的也只有ConnectWHClient.Close()这一个方法,请问高手们该如何解决“CLOSE_WATE没反应”的问题。
private void button2_Click(object sender, System.EventArgs e)//连接WHClient
{
string ClientMachine = textBox3.Text;
IPAddress remoteIPAddress = new IPAddress(0);
remoteIPAddress = IPAddress.Parse(ClientMachine);
ConnectWHClient.Connect(remoteIPAddress,2000);//真正关键的连接语句。
textBox4.Text = " ok";
}
private void button6_Click(object sender, System.EventArgs e)//断开
{
ConnectWHClient.Close();
textBox4.Text = "Close";
}
S端是用API写的,代码如下:
WHCSocketSend=socket(AF_INET,SOCK_STREAM,0)
setsockopt(WHCSocketSend,SOL_SOCKET,SO_REUSEADDR,(const char*)&bDontLinger,sizeof(BOOL));
WSAAsyncSelect(WHCSocketSend,NULL,NULL,FD_ACCEPT|FD_CLOSE|FD_READ);
if( WSAAsyncSelect!=0 )
{
switch(ConnectlParam)
{
case FD_ACCEPT:
accept(WHCSocketSend,INADDR_ANY,NULL);
break;
case FD_CLOSE:
closesocket(WHCSocketSend);
break;
}
}
现在遇到的问题是,连接没问题,但每次断开后S端总是在出现CLOSE_WATE就没反应了,我查过网上的很多文章,说加了“setsockopt(WHCSocketSend,SOL_SOCKET,SO_REUSEADDR,(const char*)&bDontLinger,sizeof(BOOL));”这句应该可以解决,但文章中所说的S端和C端都用的是API,而我C端用的是C#,好像在.NET Framenwork类库中能关闭TCP连接的也只有ConnectWHClient.Close()这一个方法,请问高手们该如何解决“CLOSE_WATE没反应”的问题。
解决方案 »
- 关于设计的问题
- 各位新年好!问个子字符串的问题
- WinFrom GridView绑定时,列居然随机排序
- 是高手你就进来。。
- usercontrol的page_load事件为什么不被执行
- 请问,我用C#开发的WEB项目,服务器运行在简体中文win2000时一切正常,但将服务器换为繁体版时,用IE浏览页面时乱码,检查了IE的编码是简
- DataGrid中显示时间的格式怎么设置,我要显示日期,但是它却显示了日期和时间,同时用Format属性不起作用。
- c# 验证码识别
- 谁知道关于控件使用方面的书介绍给我几本!
- FORM2 和 FORM1 的操作问题.
- 一个界面设计的问题,大家看看
- 帮我看这个事件,为什么运行后不显示结果呢?在线等~~
____________________________________________________
还有 ConnectWHClient.Disconnect().
试一下..