C 程序間通訊的幾種方式 Socket通訊

2021-09-09 08:35:58 字數 2438 閱讀 8987

方式二: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 訊號量是乙個計數器,可以用來控制多個程序對...