前面已經貼了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...