以前學過的socket,後來沒怎麼用過,就基本忘了,所以閒來時重新回顧學習一番.
socket其實並不是乙個協議,而是為了方便使用tcp或udp而抽象出來的一層,是位於應用層和傳輸控制層之間的一組介面.
當兩台主機通訊是,必須通過socket連線,socket則利用tcp/ip協議建立tcp連線.tcp連線則更依賴於底層的ip協議.socket是控制層傳輸協議.
雙向的通訊連線實現資料的交換,連線的一端成為乙個socket.
第一步:服務端監聽某個埠
第二步:客戶端向服務端位址和埠發起socket請求
第三步:伺服器接收連線請求後建立socket連線,並維護這個連線佇列
第四步:客戶端和服務端就建立起了雙工同信,客戶端與服務端就可以實現彼此傳送訊息
1.服務端**
using system;
using system.collections.generic;
using system.linq;
using system.net;
using system.net.sockets;
using system.text;
using system.threading;
namespace socketutil
public socketserver(int port)
public void startlisten()
訊息成功", _socket.localendpoint.tostring());
開始監聽
thread thread = new thread(listenclientconnect);
thread.start();
}catch (exception ex)
}/// /// 監聽客戶端連線
///
private void listenclientconnect()
}catch (exception)
}/// /// 接收客戶端訊息
///
/// 來自客戶端的socket
private void receivemessage(object socket)
,訊息", clientsocket.remoteendpoint.tostring(), encoding.utf8.getstring(buffer, 0, length));
}catch (exception ex)}}
}}
2.客戶端**
using system;
using system.collections.generic;
using system.linq;
using system.net;
using system.net.sockets;
using system.text;
using system.threading;
using system.threading.tasks;
namespace socketutil
public socketclient(int port)
/// /// 開啟服務,連線服務端
///
public void startclient()
,訊息:", _socket.remoteendpoint.tostring(), encoding.utf8.getstring(buffer,0,length));
像伺服器傳送訊息
for (int i = 0; i < 10; i++)
", datetime.now.tostring());
_socket.send(encoding.utf8.getbytes(sendmessage));
console.writeline("像服務傳送的訊息:", sendmessage);}}
catch (exception ex)
console.writeline("傳送訊息結束");
console.readkey();}}
}
3.分別開啟客戶端和服務端
using socketutil;
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;}}
using socketutil;
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;}}
4. 執行效果圖
python中的socket簡單使用
伺服器端套接字 客戶端套接字 公共用途的套接字函式 服務端我們可以使用 socket 模組的 socket 函式來建立乙個 socket 物件。然後通過呼叫 bind hostname,port 函式來指定服務的埠。接著,呼叫 socket 物件的 accept 方法,等待客戶端的連線,返回 con...
C 之Socket的簡單使用
socket是一種通訊tcp ip的通訊介面,也就是http的抽象層,就是socket在http之上,socket也就是發動機。實際上,傳輸層的tcp是基於網路層的ip協議的,而應用層的http協議又是基於傳輸層的tcp協議的,而socket本身不算是協議,就像上面所說,它只是提供了乙個針對tcp或...
Socket的使用(簡單測試)
服務端 public class sockettest public sockettest int port public void startlisten catch exception ex 監聽客戶端連線 private void listenclientconnect catch excep...