python网络编程之TCP编程

TCP编程

模拟客户端和服务器端进行通信。其中要素为ip地址和端口。

客户端:

  1. 建立socket对象,并且设置为TCP模式
  2. 用connect()方法设置端口和ip地址,需要传入一个set。
  3. 可以进行接受和发送的操作
  4. 关闭socket连接

服务器端:

因为一个服务器打开一个固定端口进行监听,但是可能响应不同的客户端,所以可以定义不同的进程序进行处理。

  1. 建立socket对象
  2. 绑定IP地址和端口
  3. 监听
  4. 利用进程响应不同的客户端请求,可以发送和接受数据等操作
  5. 关闭socket连接

实例:

客户端:

import socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(('127.0.0.1',9999))
print(s.recv(1024).decode('utf-8'))
for i in [b'Michael', b'Tracy', b'Sarah']:
    s.send(i)
    print(s.recv(1024).decode('utf-8'))
s.send(b'exit')
s.close()

服务器端:

import socket
import threading
import time
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(('127.0.0.1', 9999))
s.listen(5)
print('Waiting for connection...')
def tcplink(sock,addr):
    print('Accept new connection from %s:%s...' % addr)
    sock.send(b'Welcome!')
    while True:
        data=sock.recv(1024)
        time.sleep(1)
        if not data or data.decode('utf-8')=='exit':
            break
        sock.send(b'hello %s'% data.decode('utf-8').encode('utf-8'))
        # print(data.decode('utf-8'))
        # print(data.decode('utf-8').encode('utf-8'))
    sock.close()
    print('Connection from %s:%s closed.' % addr)

while True:
    sock,addr=s.accept()
    t=threading.Thread(target=tcplink,args=(sock,addr))
    t.start()

参考教程:廖雪峰的python教程:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014319556588648dd1fb0047a34d0c945ee33e8f4c90cc000

猜你喜欢

转载自www.cnblogs.com/celine-huang/p/10696695.html