python--socket

TCP/IP--socket传字符
server:
1 #!/usr/bin/env python 2 # -*- encoding:utf-8 -*- 3 import socket 4 5 # AF_INET指定使用IPv4协议 ,SOCK_STREAM指定使用面向流的TCP协议 6 sk = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM) 7 8 # binding address:port 9 sk.bind(('127.0.0.1', 9999,)) 10 11 # listenning max is 5 12 sk.listen(5) 13 while True: 14 # block 15 host, addr = sk.accept() 16 17 # ('127.0.0.1', 55470) <class 'tuple'> 18 print(addr, type(addr)) 19 """ 20 <socket.socket fd=416, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, 21 proto=0, laddr=('127.0.0.1', 9999), raddr=('127.0.0.1', 55470)> <class 'socket.socket'> 22 23 """ 24 print(host, type(host)) 25 # send info 26 host.sendall(bytes('welcome to oldboy', encoding='utf-8')) 27 while True: 28 # block 29 data = host.recv(1024) 30 host.sendall(bytes('你好!', encoding='utf-8')) 31 print(str(data, encoding='utf-8'))
client:
1 #!/usr/bin/env python 2 # -*- encoding:utf-8 -*- 3 import socket 4 5 sk = socket.socket() 6 sk.connect(('127.0.0.1', 9999)) 7 print(sk, type(sk)) 8 while True: 9 # block 10 inp = input("please input info:") 11 # send info 12 sk.sendall(bytes(inp, encoding='utf-8')) 13 14 bytes_data = sk.recv(1024) 15 print(str(bytes_data, encoding='utf-8', ))
TCP/IP--socket传输文件:
server:
1 #!/usr/bin/env python 2 # -*- encoding:utf-8 -*- 3 import socket 4 import os 5 6 sk = socket.socket() 7 sk.bind(('127.0.0.1', 9999,)) 8 sk.listen(5) 9 10 while True: 11 sock, addr = sk.accept() 12 flag = True 13 f = open('b.jpg', 'wb') 14 15 while True: 16 bytes_data = sock.recv(1024) 17 if bytes_data: 18 f.write(bytes_data) 19 else: 20 f.close() 21 break 22 # 查看文件的大小 23 print(os.stat('b.jpg').st_size) 24 break 25 sk.close()
client:
1 #!/usr/bin/env python 2 # -*- encoding:utf-8 -*- 3 import socket 4 import os 5 print(os.stat('a.jpg').st_size) 6 sock = socket.socket() 7 # 查看文件的大小 8 sock.connect(('127.0.0.1', 9999)) 9 with open('a.jpg', 'rb') as f: 10 print(f, type(f)) 11 # print(f.read()) 12 for bytes_data in f: 13 sock.sendall(bytes_data) 14 sock.close()
UDP:
server:
1 #!/usr/bin/env python 2 # -*- encoding:utf-8 -*- 3 import socket 4 5 addr = ('127.0.0.1', 8888) 6 # AF_INET ==> ipv4 SOCK_DGRAM==>数据报 7 sk = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0) 8 sk.bind(addr) 9 while True: 10 data = sk.recv(1024) 11 print(str(data, encoding='utf-8'))
client:
1 #!/usr/bin/env python 2 # -*- encoding:utf-8 -*- 3 import socket 4 5 addr = ('127.0.0.1', 8888) 6 # AF_INET ==> ipv4 SOCK_DGRAM==>数据报 7 sk = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0) 8 9 while True: 10 inp = input('please input info:').strip() 11 if inp == 'exit': 12 break 13 sk.sendto(bytes(inp, encoding='utf-8'), addr) 14 sk.close()
浙公网安备 33010602011771号