TCP编程
分为服务端与客户端;
创建运行服务端需要五个步骤:
1)创建socket并绑定到本地IP与端口;
2)开始监听链接;
3)进入循环,不断接受连接请求;
4)接收传来的数据,并发送给对方数据;
5)传输完毕后,关闭socket;
# coding:utf-8
import time, random
import threading
import socket
def DoSth(s, addr):
print("Accept a new connection from {}!".format(addr))
s.send(b"hello I'm server!")
while True:
data = s.recv(1024)
time.sleep(1)
if data.decode('utf-8') == "exit":
break
else:
print("-->>{}".format(data.decode('utf-8')))
s.send(("Complete message: {}".format(data.decode('utf-8'))).encode('utf-8'))
s.close()
print("Connection from {} Over!".format(addr))
if __name__ == '__main__':
#create socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#bind IP
s.bind(('127.0.0.1', 9999))
#listen
s.listen(5)
print("Wait for connection....")
#circle
while True:
# accept a new link
sock, address = s.accept()
t = threading.Thread(target= DoSth, args=(sock, address))
t.start()
客户端需要三个步骤:
1)创建socket, 连接远端地址
2)发送和接收数据
3)关闭socket
# coding:utf-8
import socket
#init socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#connect
s.connect(('127.0.0.1', 9999))
print('-->>'+s.recv(1024).decode('utf-8'))
s.send("hello this is client".encode('utf-8'))
print('-->>'+s.recv(1024).decode('utf-8'))
s.send(b"exit")
s.close()
UDP编程
对于服务端
1)创建socket, 绑定地址和端口
2)发送和接收数据
3)关闭socket
客户端
1)创建socket
2)发送和接收数据
3)关闭socket