現階段socket通訊使用tcp、udp協議,相對應udp來說,tcp則是比較安全穩定的協議了。本文只涉及到tcp協議來說socket通訊。首先講述tcp/ip的三次握手,在握手基礎上延伸socket通訊的基本過程。
1.客戶端傳送syn報文到伺服器端,並置傳送序號為x。
2.伺服器端接收到客戶端傳送的請求報文,然後向客戶端傳送syn報文,並且傳送確認序號x+1,並置傳送序號為y。
3.客戶端受到伺服器傳送確認報文後,傳送確認訊號y+1,並置傳送序號為z。至此客戶端和伺服器端建立連線。
在此基礎上,socket連線過程:
伺服器監聽:伺服器端socket並不定位具體的客戶端socket,而是處於等待監聽狀態,實時監控網路狀態。
客戶端請求:客戶端clientsocket傳送連線請求,目標是伺服器的serversocket。為此,clientsocket必須知道serversocket的位址和埠號,進行掃瞄發出連線請求。
連線確認:當伺服器socket監聽到或者是受到客戶端socket的連線請求時,伺服器就響應客戶端的請求,建議乙個新的socket,把伺服器socket傳送給客戶端,一旦客戶端確認連線,則連線建立。
注:在連線確認階段:伺服器socket即使在和乙個客戶端socket建立連線後,還在處於監聽狀態,仍然可以接收到其他客戶端的連線請求,這也是一對多產生的原因。
下圖簡單說明連線過程:
socket連線原理知道了,此處編寫最基本最簡單的socket通訊(兩個程式均為控制台程式):
伺服器端:
using system;
using system.net;
using system.net.sockets;
using system.text;
using system.threading;
namespace socketserver
成功", _serversocket.localendpoint.tostring());
//通過clientsocket傳送資料
thread mythread = new thread(listenclientconnect);
mythread.start();
console.readline();
}///
/// 監聽客戶端連線
///private
static
void
listenclientconnect()
}///
/// 接收訊息
//////
private
static
void
receivemessage(object clientsocket)
訊息", myclientsocket.remoteendpoint.tostring(),
encoding.ascii.getstring(_result, 0, receivenumber));
}catch (exception ex)}}
}}
客戶端:
using system;
using system.net;
using system.net.sockets;
using system.text;
using system.threading;
namespace
socketclient
catch
//通過clientsocket接收資料
int receivelength = clientsocket.receive(_result);
console.writeline("接收伺服器訊息:", encoding.ascii.getstring(_result, 0, receivelength));
//通過clientsocket傳送資料
for (int i = 0; i < 10; i++)
" + sendmessage);
}catch
console.writeline("傳送完畢,按回車鍵退出");
console.readline();}}
}}
執行結果:
這就完成了乙個簡單的socket程式設計demo。
python網路程式設計 TCP網路程式設計
tcp程式設計 客戶端 import socket 1 套接字 tcp socket socket.socket socket.af inet,socket.sock stream 2 建立鏈結 tcp socket.connect 172.27.35.1 8080 3 傳送資訊 tcp socke...
網路程式設計 網路基礎
1.物理層 提供建立 維護和拆除物理鏈路所需的機械 電氣 功能和規程的特性 提供有關在傳輸介質上傳輸非結構的位流及物理鏈路故障檢測指示。在這一層,資料還沒有被組織,僅作為原始的位流或電氣電壓處理,單位是位元。常用協議 eia tia rs 232 eia tia rs 449 v.35 rj 45 ...
網路程式設計 網路概述
應用層 常見的協議有http協議 ftp協議 傳輸層 常見協議有tcp udp協議。網路層 常見的協議有ip協議 icmp協議 igmp協議 鏈路層 常見的協議有arp協議 rarp協議。tcp 傳輸控制協議 是一種面向連線的 可靠的 基於位元組流的傳輸層通訊協議。http 超文字傳輸協議 是網際網...