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'))
View Code

 

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', ))
View Code

 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()
View Code

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()
View Code

 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'))
View Code

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()
View Code

 

posted on 2018-01-23 20:59  jovelove  阅读(92)  评论(0)    收藏  举报