网络编程--------socket编程

网络通信的基本要素

  • IP
    (IPv4: 32位二进制组成, 0~2^32-1, 点分十进制, 172.25.254.12
    IPv6:128w位二进制组成,0~2^128-1, 冒分十六进制表示法;

  • 端口(物理端口和逻辑端口)
    数据要发送到对方主机指定的应用程序, 为了标识这些应用程序, 给指定端口;
    (0~65535)(1-1024)
    程序和端口默认的对应关系: /etc/services;
    netstat

  • 协议
    TCP/IP协议, OSI协议

socket通信—服务端

import socket
HOST='172.25.254.31'
PORT=9854
# 1. 创建服务端的socket对象
serverSocket = socket.socket()
# 2. 绑定一个ip和端口, 客户端连接时的socket;
serverSocket.bind((HOST, PORT))
# 3. 一直监听是否有客户端连接
serverSocket.listen()
print("server is listening %d......." %(PORT))
# 4. 如果有客户端连接, 接收客户端的连接;
# serverSocket.accept会返回2个值, address指的是, 客户端的ip和端口;
clientSocket, address = serverSocket.accept()
# 5. 客户端和服务端进行通信;
data = clientSocket.recv(1024).decode('utf-8')
print("接收到客户端的消息:", data)
# 6. 给客户端回复消息
clientSocket.send(b'hello client')
# 7. 关闭socket对象, 一次通信完成;
serverSocket.close()
clientSocket.close()

socket通信–客户端

import socket
HOST = '172.25.254.31'
PORT = 9854
# 1.
clientSocket = socket.socket()
# 2. 连接远程主机
clientSocket.connect((HOST, PORT))
# 3. 客户端, 服务端通信
# 给server主机发送消息
clientSocket.send(b'hello server')
# 接收服务端的响应(即服务端回复的消息)
recvData = clientSocket.recv(1024).decode('utf-8')
print("接收到服务器的消息:", recvData)
# 4. 关闭socket对象:
clientSocket.close()

猜你喜欢

转载自blog.csdn.net/xijiao_jiao/article/details/81148159