方式二:socket通訊
套接字(socket)是支援tcp/ip協議(安全)和udp協議(快速)的網路通訊的基本操作單元。套接字包含進行網路通訊必須的五種資訊:連線使用的協議,本地主機的ip位址,本地程序的協議埠,遠地主機的ip位址,遠地程序的協議埠。為了滿足不同程式對通訊質量和效能的要求,一般的網路系統都提供了流式、資料報式、原始3種不同型別的套接字。
socket通訊方式:
在c/s程式設計模式下socket通訊的過程:
伺服器端:開啟通訊通道(告訴本地機器,願意在該通道上接受客戶請求)——監聽(等待客戶請求)——接受請求(建立專用鏈結進行讀寫)——處理完畢(關閉通訊通道)。
客戶端:開啟通訊通道(連線伺服器)——資料互動——關閉通道。
下面以流式,tcp協議,非同步通訊,伺服器端和客戶端一對多(同時適用一對一)為例寫出控制台應用程式:
1、sockethelper類:
using system;
using system.net;
using system.net.sockets;
namespace sockethelper
public string ip;
public clientsession(socket clientsocket)
public string getipstr()
}public class socketconnection:idisposable
}#region 構造
public socketconnection(socket sock)
#endregion
#region 連線
public void connect(ipaddress ip,int port)
private void connectcallback(iasyncresult ar)
catch (socketexception ex)
}#endregion
#region 傳送資料
public void send(string data)
private void send(byte bytedata)
catch (socketexception ex)
}private void sendcallback(iasyncresult ar)
catch (socketexception ex)
}#endregion
#region 接收資料
public void receivedata()
private void receivecallback(iasyncresult ar)
else
}catch (socketexception ex)
}public void dispose()
catch (exception ex)
}#endregion}}
2、伺服器端程式:
using system;
using system.collections;
using system.net;
using system.net.sockets;
using system.text;
using system.threading;
namespace socketserver
}console.writeline("建立連線:",clientsession.ip);
sockethelper.socketconnection socketconnection = new sockethelper.socketconnection(clientsocket);
socketconnection.receivedata();
thread.sleep(1000);
string recstr = "";
recstr += encoding.ascii.getstring(socketconnection.msgbuffer);
console.writeline("伺服器獲得資訊:", recstr);}}
catch (socketexception ex)}}
}
3、客戶端程式:
using system;
using system.net;
using system.net.sockets;
namespace socketclient}}
4、執行結果:
注:參考資料:
c#程序間通訊的幾種方式:管道通訊
c#程序間通訊的幾種方式:socket通訊
c#程序間通訊的幾種方式:訊息佇列
幾種程序間的通訊方式
管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。有名管道 named pipe 有名管道也是半雙工的通訊方式,但是它允許無親緣關係程序間的通訊。訊號量 semophore 訊號量是乙個計數器,可以用來控制多個程序對...
程序間的幾種通訊方式
管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。有名管道 named pipe 有名管道也是半雙工的通訊方式,但是它允許無親緣關係程序間的通訊。訊號量 semophore 訊號量是乙個計數器,可以用來控制多個程序對...
幾種程序間的通訊方式
管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。有名管道 named pipe 有名管道也是半雙工的通訊方式,但是它允許無親緣關係程序間的通訊。訊號量 semophore 訊號量是乙個計數器,可以用來控制多個程序對...