02-TCP网络程序-客户端

目标

  • 能够编写tcp网络客户端程序,进行数据发送

1.tcp客户端构建流程

tcp的客户端要比服务器端简单很多,tcp和服务端建立连接后,直接发送数据

image-20180812230343818

2.实现效果

tcp_client-4084789

3. 实现步骤

  1. 导入 socket 模块
  2. 创建socket 套接字
  3. 建立tcp连接(和服务端建立连接)
  4. 开始发送数据(到服务端)
  5. 关闭套接字

4.核心方法

  • socket.connect(address)—— 主动初始化TCP服务器连接。

一般address的格式为元组(hostname,port),如果连接出错,返回socket.error错误。

addr = ("192.168.31.167",8080)
socket.connect(addr) 

socket.connect(("192,.168.31.167",8080))
  • socket.send(要发送的数据) —— 向服务端发送数据,此处的数据必须是二进制类型
socket.send("你好".encode())  # 发送的为"你好" 的二进制格式
  • socket.recv(缓冲区大小) —— 接收TCP数据,数据以二进制形式返回,bufsize指定要接收的最大数据量。
socket.recv(1024) # 接收tcp数据,每次接收1024个字节

5.代码实现

# 1、导入socket模块
import socket
# 2、创建socket
tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 3、建立tcp连接
tcp_client_socket.connect(("192.168.31.247", 7878))
# 4、开始发送数据
tcp_client_socket.send("哈哈哈,打不过我吧!?".encode("utf-8"))
# 5、关闭套接字
tcp_client_socket.close()

tcp_client

6.tcp客户端发送、接收数据

tcp客户端连接服务器后,可以发送数据到服务器端,也可以接收服务器端返回的数据

# 1、导入socket模块
import socket
# 2、创建socket
tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 3、建立tcp连接
tcp_client_socket.connect(("192.168.31.163", 7878))
# 4、开始发送数据
tcp_client_socket.send("哈哈哈,打不过我吧!?".encode("utf-8"))

# 开始接收对方回复的数据
recv_data = tcp_client_socket.recv(1024)
print("接收到数据:", recv_data.decode("utf-8"))

# 5、关闭套接字
tcp_client_socket.close()

tcp_client_recv

7.tcp客户端常见错误

image-20180627231730298