python.socket是python自带的函数包
通过socket可以编写发送自定义的网络数据包
常见内容讲解:
1。创建socket对象
client = socket.socket()
#创建一个socket对象,
#当参数为空时则默认创建ipv4的tcp对象
2。连接服务器
client.connect(("192.168.0.1",9999))
#使用上面定义的的ipv4 tcp对象连接到192.168.0.1的9999端口,
#注意.connect的参数为元组形式的数据
3。发送数据
client.send("你好".encode("gbk"))
#发送数据到当前连接的服务器,需要提前建立连接
#.send()的参数为二进制数据,我这里时用过.encode("gbk"),将字符串“你好”转化为二进制数据的
4。接收数据
data=client.recv(1024)
#接收来自当前建立连接的服务器的数据,并设置最大缓冲区为1024,
#注意.recv(1024)返回的是二进制数据,而且recv默认在没接收到数据时时阻塞的!
5。断开连接
client.close()
#断开当前连接的服务器
学会了这些基础操作,我们来动手做一个tcp客户端吧!
#coding:utf-8
#maker:猫先生的早茶
#make time:2019-4-1
import socket
class TCP_client():
def __init__(self):
#创建客户端
self.client = socket.socket()
#将客户端连接到指定服务器的指定端口
server_addr = input("请输入服务器的地址:")
server_port = int(input("请输入服务器的端口号:"))
self.client.connect((server_addr,server_port))
def client_recv(self):
#接收数据并检查数据是否为空,不为空时则打印数据的内容
data = self.client.recv(1024)
if data:
print ("收到消息:{}".format(data.decode("gbk")))
def client_send(self):
#创建循环,发送消息到服务器,并激活接收服务器消息的函数
while True:
msg = input("请输入要发送的消息:")
self.client.send(msg.encode("gbk"))
self.client_recv()
#创建一个TCP_client实例,并且调用实例的client_send方法
tcp_client = TCP_client()
tcp_client.client_send()