Socket程式設計 tcp服務端和客戶端通訊

2021-08-29 07:27:30 字數 1496 閱讀 8212

1.基於tcp協議的socket通訊類似於b/s架構,面向連線,但不同的是伺服器端可以向客戶端主動推送訊息。

使用tcp協議通訊需要具備以下幾個條件:

(1).建立乙個套接字(socket)

(2).繫結伺服器端ip位址及埠號--伺服器端

(3).利用listen()方法開啟監聽--伺服器端

(4).利用accept()方法嘗試與客戶端建立乙個連線--伺服器端

(5).利用connect()方法與伺服器建立連線--客戶端

(5).利用send()方法向建立連線的主機傳送訊息

(6).利用recive()方法接受來自建立連線的主機的訊息(可靠連線)

首先引入命名空間:using system.net;  using system.net.sockets;

class program

);endpoint point = new ipendpoint(ipaddress, 7788);//ipendpoint是對ip+埠做了一層封裝的類

tcpserver.bind(point);//向作業系統申請乙個可用的ip跟埠號 用來做通訊

//3,開始監聽 (等待客戶端連線)

tcpserver.listen(100);//引數是最大連線數

console.writeline("開始監聽");

socket clientsocket = tcpserver.accept();//暫停當前執行緒,直到有乙個客戶端連線過來,之後進行下面的**

console.writeline("乙個客戶端連線過來了");

//使用返回的socket跟客戶端做通訊

string message = "hello 歡迎你";

byte data = encoding.utf8.getbytes(message);//對字串做編碼,得到乙個字串的位元組陣列

clientsocket.send(data);

console.writeline("向客戶端傳送了一條資料");

byte data2 = new byte[1024];//建立乙個位元組陣列用來當做容器,去承接客戶端傳送過來的資料

int length = clientsocket.receive(data2);

string message2 = encoding.utf8.getstring(data2, 0, length);//把位元組資料轉化成 乙個字串

console.writeline("接收到了乙個從客戶端傳送過來的訊息:" + message2);

服務端socket程式

socket是一種ipc方法,本文實現乙個簡單的服務端例程,用於了解socket程式框架。socket函式用於建立套接字。bind函式用於分配ip位址和埠號。listen函式將套接字轉為可接收連線狀態。accept函式受理連線請求。如果在沒有連線的情況下呼叫該函式,則不會返回,直到有連線請求為止。c...

網路程式設計之TCP客戶端開發和TCP服務端開發

建立客戶端套接字物件 和服務端套接字建立連線 傳送資料 接收資料 關閉客戶端套接字 import socket if name main 建立tcp客戶端套接字 1.af inet 表示ipv4 2.sock stream tcp傳輸協議 tcp client socket socket.socke...

Socket網路程式設計(2) 服務端實現

中秋了,首先祝大家中秋快樂,閒著無事在家整乙個socket的聊天程式,有點仿qq介面,就是瞎折騰,不知道最後是不是能將所有功能實現。如果你對socket不了解,請看這篇文章 可以讓你快速對socket有個整體認識,如果你已經是socket網路程式設計高手,你可以忽略n個字,跳出本文章.lz想實現的功...