您好,登錄后才能下訂單哦!
在Linux系統中,Socket編程是一種用于實現進程間通信(IPC)和網絡通信的技術
Socket類型:
地址族:
創建套接字:
使用socket()
函數創建套接字。例如:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
綁定套接字:
使用bind()
函數將套接字綁定到指定的地址和端口。例如:
server_address = ('localhost', 12345)
sock.bind(server_address)
監聽連接:
對于流式套接字,需要使用listen()
函數開始監聽連接。例如:
sock.listen(5)
接受連接:
使用accept()
函數接受客戶端連接。例如:
client_sock, client_address = sock.accept()
發送和接收數據:
使用send()
和recv()
函數發送和接收數據。例如:
client_sock.sendall(b'Hello, world!')
data = client_sock.recv(1024)
關閉套接字:
使用close()
函數關閉套接字。例如:
client_sock.close()
sock.close()
以下是一個簡單的TCP服務器和客戶端示例:
服務器端代碼:
import socket
def main():
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 12345)
sock.bind(server_address)
sock.listen(5)
while True:
print("Waiting for a connection...")
client_sock, client_address = sock.accept()
print("Connected to", client_address)
data = client_sock.recv(1024)
print("Received:", data)
client_sock.sendall(b'Hello, client!')
client_sock.close()
if __name__ == '__main__':
main()
客戶端代碼:
import socket
def main():
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 12345)
sock.connect(server_address)
sock.sendall(b'Hello, server!')
data = sock.recv(1024)
print("Received:", data)
sock.close()
if __name__ == '__main__':
main()
這只是一個簡單的示例,實際應用中可能需要考慮更多的細節,如錯誤處理、多線程或多進程等。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。