非同步Socket通訊總結

2021-04-18 14:21:52 字數 2922 閱讀 8557

前面已經貼了socket的基本程式設計要點和步驟,這裡繼續貼一下關於非同步socket通訊的**。

服務端(非同步):

using

system.net ;

using

system.net.sockets ;

using

system.io ;

using

system.text ;

using

system.threading ;

public

static manualresetevent alldone = new manualresetevent(false);     

private thread th;

private

bool listenerrun = true ;

socket listener;

private

const

int max_socket=10;

protected

override

void dispose( bool disposing )

catch              }

//得到本機ip位址

public

static ipaddress getserverip()

//偵聽方法

private

void listen()

} catch (system.security.securityexception )

} //非同步**函式

public

void acceptcallback(iasyncresult ar)

//非同步接收**函式

public

void readcallback(iasyncresult ar)

else

} }

//非同步傳送

private

void send(socket handler, string data)

#region

//用單獨的socket傳送

private

void send(string data)

#endregion

//非同步傳送**函式

private

static

void sendcallback(iasyncresult ar)

catch (exception ex)

}private

void btnlisten_click(object sender, system.eventargs e)

private

void btnclosenet_click(object sender, system.eventargs e)

catch

} private

void btnexit_click(object sender, system.eventargs e)

catch(exception ex)

finally

} //非同步傳遞的狀態物件

public

class stateobject

客戶端(同步傳送並接收):

using

system.net ;

using

system.net.sockets ;

using

system.io ;

using

system.text ;

using

system.threading ;

socket socket;

int numbyte=1024;//

一次接收到的位元組數

private

void btnconnect_click(object sender, system.eventargs e)

catch

#region

//            bytemessage=encoding.ascii.getbytes(textbox1.text+"99");

//            socket.send(bytemessage);

//            byte bytes = new byte[1024];

//            socket.receive(bytes);

//            string str=encoding.default.getstring(bytes);

//            messagebox.show("

接收到:"+str);

//            socket.shutdown(socketshutdown.both);

//            socket.close();

#endregion

} private

void btnsend_click(object sender, system.eventargs e)

catch

//異常處理

} private

void sendinfo(string message)

} statusbar1.panels[1].text ="

接收資訊完畢!" ;

// //**解碼

codeparse(sb.tostring());

// socket.shutdown(socketshutdown.both);

socket.close(); }

//非同步傳送**函式

//得到本機ip位址

非同步Socket通訊總結

服務端 非同步 using system.net using system.net.sockets using system.io using system.text using system.threading public static manualresetevent alldone new ...

Socket非同步通訊

1.可以通過多執行緒來解決 一會補上 2.socket在tcp udp兩種通訊協議下的非同步通訊 基於tcp的非同步通訊 beginaccept方法和endeaccept方法 包含在system.net.sockets命名空間下。非同步tcp使用beginaccept方法開始接受新的客戶端連線請求,...

GLib實現socket非同步通訊

1.基本結構 2.非同步連線 g socket client connect async 3.連線後 g object ref connection 4.g input stream close async 5.g input stream read async,g output stream wr...