一、socket模块tcp用法

1.服务端

 1 import socket
 2 sk = socket.socket()                #创建一个socket对象
 3 sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)  #避免端口占用问题
 4 sk.bind(('127.0.0.1',10000))         #给socket对象绑定端口
 5 sk.listen()                         #监听端口
 6 conn,addr = sk.accept()             #获取连接和客户端地址
 7 ret = conn.recv(1024)               #接收客户端信息
 8 print(ret)
 9 conn.send(b'yingda')                #向客户端发送信息
10 ret = conn.recv(1024)
11 print(ret.decode('utf-8'))
12 conn.send('包子'.encode('utf-8'))
13 conn.close()                        #关闭连接
14 sk.close()                          #删除socket对象

执行结果

b'qingqiu'
中午吃什么?

 

2.客户端

 1 import socket
 2 sk = socket.socket()                #创建socket对象
 3 sk.connect(('127.0.0.1',10000))      #连接服务端IP和端口
 4 sk.send(b'qingqiu')                 #发送信息
 5 ret = sk.recv(1024)                 #接收信息
 6 print(ret)
 7 # sk.send('中午吃什么?'.encode('utf-8'))
 8 sk.send(bytes('中午吃什么?',encoding='utf-8'))
 9 ret = sk.recv(1024)
10 print(ret.decode('utf-8'))
11 sk.close()                          #删除socket对象

执行结果

b'yingda'
包子

 

二、socket模块udp用法

1.服务端

1 sk = socket.socket(type=socket.SOCK_DGRAM)      #创建socket对象
2 sk.bind(('127.0.0.1',8080))                       #给socket对象绑定端口
3 meg,addr = sk.recvfrom(1024)                    #接收信息,并记录地址
4 print(meg.decode('utf-8'))
5 sk.sendto(b'bye',addr)                          #根据地址发送信息
6 sk.close()

 

2.客户端

1 import socket
2 sk = socket.socket(type=socket.SOCK_DGRAM)      #创建socket对象
3 ipaddr = ('127.0.0.1',8080)
4 sk.sendto(b'hello',ipaddr)                  #根据地址和端口发送信息
5 print(sk.recv(1024).decode('utf-8'))        #接收信息并打印