赞
踩
客户端:创建TCP链接时,主动发起连接的叫做客户端
服务端:接收客户端的连接
可以通过tcp连接其他服务器。
示例:
- import socket
-
- # 1.创建一个socket
- # 参数1:指定协议 AF_INET(ipv4) 或 AF_INET6(ipv6)
- # 参数2:SOCK_STREAM执行使用面向流的TCP
- sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-
- # 建立连接
- # 参数:是一个元组,第一个元素为要连接的服务器IP地址,第二个参数为端口
- sk.connect(('网站域名', 80))
-
- # 发送信息给服务端
- sk.send(b'GET / HTTP/1.1\r\nHost: www.aixiashu.info\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0\r\nConnection: close\r\n\r\n')
-
- # 等待接收数据
- data = []
- while True:
- # 每次接收1k数据
- temData = sk.recv(1024)
- if temData:
- data.append(temData)
- else:
- # 接收完数据
- break
- context = (b''.join(data)).decode('utf-8')
-
- # 断开链接
- sk.close()
- print(context)
执行结果:
示例:
- head, html = context.split('\r\n\r\n', 1)
- print('响应头:', head)
- print('响应文本内容', html)
响应头在浏览器中会自动处理,不会显示在页面中。
执行结果:
示例:
- import socket
-
- # 创建一个socket
- server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- # 绑定IP端口 使用自己本机ip,可通过命令行ipconfig查看获得
- server.bind(('192.168.8.111', 8080))
-
- # 监听
- server.listen(3)
- print('服务器启动。。。。。。')
-
- # 等待客户端连接
- clientSocket, clientAddress = server.accept()
- print("%s -- %s 连接成功"%(str(clientSocket), clientAddress))
-
- while True:
- data = clientSocket.recv(1024)
- print('收到'+str(clientSocket)+'的数据:'+data.decode('utf-8'))
- message = input('请输入发送给客户端内容:')
- clientSocket.send(message.encode('utf-8'))
示例:
- import socket
-
- client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- client.connect(('192.168.8.111', 8080))
-
- while True:
- data = input('请输入发送内容:')
- client.send(data.encode('utf-8'))
- info = client.recv(1024)
- print('服务器:', info.decode('utf-8'))
执行结果:
注意:
停止可以先停止客户端。当前只是单线程,需要多线程才可以多客户端连接。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。