1. 程式人生 > >socket創建服務端和客戶端

socket創建服務端和客戶端

server col 監聽 print 套接字 127.0.0.1 liunx 類型 socket

看情況選擇相對應的套接字
*面向連接的傳輸--tcp協議--可靠的--流式套接字(SOCK_STREAM)
*面向無連接的傳輸--udp協議--不可靠的--數據報套接字(SOCK_DGRAM)

在liunx中 telnet ip port 可以當成臨時客服端

服務端示例:

創建服務端示例:
from socket import *

#創建套接字(參數:地址族類型,套接字類型,選定子協議類型)
sockfd = socket(AF_INET,SOCK_STREAM,proto = 0)

#綁定地址(功能:綁定地址,參數(ip,port))
sockfd.bind(("0.0.0.0",9099))

#設置監聽(參數:監聽隊列的大小) sockfd.listen(5) #等待接收連接(會進行阻塞,當客戶端連接就往下運行) #返回值:connfd 新的套接字,用於和客戶端通信,add 連接客戶端的地址(ip,port) print("Waiting for connect...") connfd,addr = sockfd.accept() print("Connect from",addr) #收發消息(沒接收到消息也會進行阻塞) #參數:一次接收消息的大小字節(bytes格式) data = connfd.recv(1024) print(data) #要發送的內容(bytes格式),返回實際發送的字節數
n = connfd.send(b"Receive your message") print(n) #關閉套接字 connfd.close() sockfd.close() 客戶端示例: from socket import * #創建套接字 sockfd = socket(AF_INET,SOCK_STREAM) #發起連接 server_addr = ("127.0.0.1",9099) sockfd.connect(server_addr) #收發消息 data = input("發送>>") sockfd.send(data.encode()) #將字符串轉換成二進制
data = sockfd.recv(1024) print("接收到:",data.decode()) #關閉字節套 sockfd.close()

socket創建服務端和客戶端