2024年6月11日发(作者:)

编程经验谈 如何处理socket连接后

服务器端或

Socket编程经验谈---如何处理socket连接后服务器端或客户端的断开

(转)2010年12月29日星期三14:50现象:服务器端等待客户断连接,当

socket连接建立后,如果客户端异常断开,服务器会抛出异常,从而导致程序

运行中断

目标:希望服务器一直等待连接,客户端中断后程序不退出,而客户端重

新恢复后可以继续保持连接

代码:

public class Receive

{

public static byte buffer=new byte[1024];

public static ManualResetEvent socketEvent=new

ManualResetEvent(false);

public static Socket sListener=new

Socket(etwork,,);

public static Socket handler=null;

public static string ClientBroken="An connection was forcibly

closed by the remote host";

public static void receive()

{

try

{

ine("Main ThreadID:

"+rentThreadId());

byte bytes=new byte[1024];

IPAddress ipAddr=("127.0.0.1");

int Port=10001;

IPEndPoint EPServer=new IPEndPoint(ipAddr,Port);

//Binding asocket (EPServer);

//Start listening (10);

while(true)

{

if(handler==null)

{

//first must make aconnect ine("waiting for

aconnection.");

//asychronous function for accepting connections

ccept(new AsyncCallback(AcceptCallback),sListener);

e();

eceive(buffer,0,,0,new

AsyncCallback(ReceiveCallback),handler);

e();