python 使用socket實現網路通訊

2021-10-03 15:05:23 字數 2439 閱讀 6515

1.服務端

import socket

import threading

import sys

def socket_service():

try:

# 建立socket物件,使用ipv4協議 tcp通訊鏈結

s = socket.socket(socket.af_inet, socket.sock_stream)

# 防止socket server重啟後埠被占用

s.setsockopt(socket.sol_socket, socket.so_reuseaddr, 1)

# 設定ip位址和埠

s.bind(('127.0.0.1', 8808))

# 最大等待數

s.listen(5)

print('waiting connection...\n')

while true:

# 等待客戶端鏈結

conn, addr = s.accept()

# 為客戶端起個執行緒

t = threading.thread(target=deal_data, args=(conn, addr))

# 設定守護執行緒

t.setdaemon(true)

# 啟動執行緒

t.start()

except socket.error as msg:

print(msg)

sys.exit(1)

finally:

s.close()

def deal_data(conn, addr):

try:

print('與您建立了鏈結\n'.format(addr))

conn.send(('您好,cpx歡迎您!\n').encode())

# 起個執行緒傳送資訊給客戶端

t = threading.thread(target=chitchat, args=(conn, addr))

t.setdaemon(true)

t.start()

# 做個迴圈接收客戶端資訊

while true:

receivedata = conn.recv(1024)

print('\n 發來資訊: '.format(addr, receivedata.decode()))

if receivedata == 'exit' or not receivedata:

print(' 連線以關閉'.format(addr))

conn.send(bytes('您已關閉連線!'), 'utf-8')

break

finally:

conn.close()

def chitchat(conn, addr):

while true:

senddata = input().encode()

print('傳送給{}的資訊是:'.format(addr), senddata)

conn.send(senddata)

if __name__ == '__main__':

socket_service()

2.客戶端

import socket

import sys

import threading

import time

s = socket.socket(socket.af_inet, socket.sock_stream)

def socket_client():

try:

s.connect(('127.0.0.1', 8808))

# 起個執行緒傳送資訊給服務端

t = threading.thread(target=chitchat)

t.setdaemon(true)

t.start()

# 做個迴圈接收服務端資訊

while true:

receivedata = s.recv(1024)

print('\n服務端發來資訊:', receivedata.decode())

except socket.error as msg:

print(msg)

sys.exit(1)

finally:

s.close()

def chitchat():

time.sleep(1)

while true:

senddata = input().encode()

s.send(senddata)

print('\n傳送給服務端的資訊:', senddata)

if senddata == 'exit':

break

if __name__ == '__main__':

socket_client()

例子原始碼

python實現socket收發資料的實現

1.建立套接字 2.使用套接字收 發資料 3.關閉套接字 import socket def main 建立套接字 udp socket socket.socket socket.af inet,socket.sock dgram 繫結資訊 這裡繫結的資料是乙個元組 udp socket.bind ...

socket 使用select 非阻塞方式實現

select函式原型如下 int select int maxfds,fd set readfds,fd set writefds,fd set exceptfds,struct timeval timeout select系統呼叫是用來讓我們的程式監視多個檔案控制代碼 socket 控制代碼 的狀...

python中Socket的使用

前一段時間學習python網路程式設計,完成簡單的通過python實現網路通訊的功能。現在,將python中socket 通訊的基本實現過程做乙個記錄備份.python 中的socket通訊較為簡單,僅需要幾行 就可實現。和一般的網路通訊一樣,通訊方式分為udp和tcp兩種方式,兩種方式的處理也略有...