Python TCP通訊客戶端服務端程式碼例項
阿新 • • 發佈:2020-01-09
這篇文章主要介紹了Python TCP通訊客戶端服務端程式碼例項,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
TCP客戶端:
import argparse,socket,sys import time # socket.setdefaulttimeout(20) def recvall(sock,length): data = b'' while len(data) < length: more = sock.recv(length - len(data)) if not more: raise EOFError('總共有%dbytes,但只收到了%dbytes' % (length,len(data))) data += more return data if __name__ == '__main__': sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) sock.connect(('192.168.137.1',10000)) print('客戶的分配了socket:',sock.getsockname()) i=0 for x in range(4): # try: text = '我是客戶端你是伺服器嚯嚯嚯!'.encode('utf-8') i=i+len(text) sock.sendall(text) sys.stdout.flush() print("已傳送:",i) # except ConnectionResetError: # pass sock.shutdown(socket.SHUT_WR) num = 0 while True: reply = sock.recv(48) # b'Farewell,client'的長度 num += len(reply) print('接收:',num) if not reply: print("ok") break # print('伺服器返回:',reply.decode('utf-8')) print("理論上應該關閉sock") sock.close() time.sleep(1)
TCP服務端:
import argparse,sys def recvall(sock,len(data))) data += more return data if __name__ == '__main__': sc = socket.socket(socket.AF_INET,socket.SOCK_STREAM) sc.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) sc.bind(('',10000)) sc.listen() print('正在偵聽{}...'.format(sc.getsockname())) num = 0 while True: scc,address = sc.accept() print('連線來自:',address) print('socket名字:',scc.getsockname()) print('socket peer:',scc.getpeername()) while True: message = scc.recv(42)#recvall(scc,24) # 嘗試 12,20,28會是什麼結果 if not message: break # print('收到16-octet訊息:',repr(message)) print('收到16-octet訊息:',(message.decode('utf-8'))) scc.sendall(message) sys.stdout.flush() num += len(message) print("已傳送:",num) scc.close() print('應答傳送,socket關閉') sc.close()
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。