启动按钮代码
serverThread = new Thread(new ThreadStart(StartListen));
serverThread.Start(); #region 开始监听端口
public void StartListen()
{
if(ListenSoc==null)
{
int nPort = Convert.ToInt32(port_textbox.Text);
IPEndPoint ipLocalEndPoint;
IPAddress ipAddress = IPAddress.Parse(serverIP.Text);
ipLocalEndPoint = new IPEndPoint(ipAddress, nPort);
try
{
ListenSoc = new Socket(AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp );
ListenSoc.Bind(ipLocalEndPoint);
ListenSoc.Listen(10);
if(!LisStop) ListenSoc.BeginAccept(new AsyncCallback(AcceptCallback),null);
}
catch(Exception err)
{
this.Close();
return;
}
}
}
我想断开所有连接到我的机子的机子,可是用shutdown和close不管用,怎么样断开呢
serverThread = new Thread(new ThreadStart(StartListen));
serverThread.Start(); #region 开始监听端口
public void StartListen()
{
if(ListenSoc==null)
{
int nPort = Convert.ToInt32(port_textbox.Text);
IPEndPoint ipLocalEndPoint;
IPAddress ipAddress = IPAddress.Parse(serverIP.Text);
ipLocalEndPoint = new IPEndPoint(ipAddress, nPort);
try
{
ListenSoc = new Socket(AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp );
ListenSoc.Bind(ipLocalEndPoint);
ListenSoc.Listen(10);
if(!LisStop) ListenSoc.BeginAccept(new AsyncCallback(AcceptCallback),null);
}
catch(Exception err)
{
this.Close();
return;
}
}
}
我想断开所有连接到我的机子的机子,可是用shutdown和close不管用,怎么样断开呢
解决方案 »
- 求指教:关于页面指令
- 关于sql数据库服务无法启动
- 准备写一个论坛抢沙发工具,还没有一点头绪
- System.Drawing.Bitmap类最大可以创建多大的位图
- C#怎么调用SPSS?
- 将datatable中的记录按某个字段值拆分生成相应的datatable,放入dataset中
- 怪问题,Socket.Send发第三次就自动断开,再连,再发,又是第三次自动断开。是向本机80端口发(开了web服务)
- 怎么设置VS2012自动多少个字后就换行,像eclipse那样
- C# winform 如何弹出一个对话框,对话框里显示一个网页
- 短消息采用PDU模式发送,为什么总有部分字节数据对方接收不到(最后几个字节丢失)?
- 安装xp sp2后,水晶报表打印问题!
- 对菜鸟来说超难的问题,以ASCII码显示二进制文件。
ListenSoc.close()
就可以了,快给分。
if(ListenSoc.connected)
判断结果竟然是false,可明明有连接的socket
CloseSocket(ListenSoc);
if(serverThread!=null) serverThread.Abort();
ListenSoc=null;
其中CloseSocket函数
public void CloseSocket(Socket conn_Sock)
{
if(conn_Sock.Connected) conn_Sock.Shutdown(SocketShutdown.Both);
conn_Sock.Close();
}
我判断if(conn_Sock.Connected)竟然为false;
这个线程能正常退出吗》?
socket.Shutdown(SocketShutdown.Both);
socket.Close();
System.Environment.Exit(0);
Application.Exit
Application.Exit
是不行的
socket.Shutdown(SocketShutdown.Both);
socket.Close();
应该关闭Socket了吧
{
conn_sock.Shutdown();
conn_sock.Close();
}这样就可以了
“由于套接子没有连接并且(当使用一个sendto调用发送数据报套接子时)没有提供地址,发送或者接收数据的请求没有被接受“。
客户端上传文件 没受到影响,直到传输完毕
private static void Listen()
{
isStop =false;
// Set the TcpListener on port 13000.
Int32 port = 1521;
IPAddress localAddr = IPAddress.Parse("192.168.80.76"); // TcpListener server = new TcpListener(port);
TcpListener server = new TcpListener(localAddr,port); // Start listening for client requests.
server.Start(); // Buffer for reading data
Byte[] cache = new Byte[256];
// Enter the listening loop.
while(!isStop)
{
if(server.Pending())
{
Socket sok = server.AcceptSocket();
EndPoint ep= sok.RemoteEndPoint; sok.Bind(sok.LocalEndPoint); int i= sok.ReceiveFrom(cache,ref ep); data += System.Text.Encoding.UTF8.GetString(cache); sok.Close(); sok.Shutdown(SocketShutdown.Receive);
}
else
{
Thread.Sleep( 100 );
}
}
server.Stop();
}
实现这个功能竟然这么难,没一个人会,其实这种情况经常遇到阿
你没看到 zmgcj(真的名贵) 的回答吗?
它的回答是对的,
不知道你Server端的程序是不是这样的,每个客户端连上以后,在Server端都专门开一个线程处理该客户端的数据传输等等,在关socket时,这个线程还在继续活动,没有关掉。如果是这样的话,关闭socket时把这些线程也都强行退出,应该就行了。