网络编程

用Python进行网络编程,就是在Python程序本身这个进程内,连接别的服务器进程的通信端口进行通信。Python 网络编程和其它语言类似,通常通过”Socket(套接字)”向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。

TCPClient

from socket import *


# print(gethostname()) # 使用 gethostname方法来获取
host_name = 'LAPTOP-E02HTJB6' # ip 192.168.80.1
port_num = 1200 # 端口

# 创建socket
clientSocket = socket(AF_INET, SOCK_STREAM) # AF_INET意思是ipv4,SOCK_STREAM意思是TCP的连接
# 建立连接
clientSocket.connect((host_name,port_num)) # ip地址 + 端口,放到一个元组里面

# 让用户输入内容
message = input("enter something: ")
clientSocket.send(message.encode()) # send发送,注意因为message是一个字符串,需要encode转换成Byte

# 接受信息
upperMessage = clientSocket.recv(1024).decode() # 把Byte转换成字符串
print('the message from the server: ' + upperMessage)

# 释放资源
clientSocket.close()

TCPServer

from socket import *

serverSocket = socket(AF_INET, SOCK_STREAM)

serverSocket.bind((gethostname(), 1200)) # 元组,服务器的地址, 注意端口号需要保持一致

# 监听请求
serverSocket.listen(2) # 这个队列的数量,最大为2
print('the server is ready to accept information......')

# 接受东西
while True: # 循环监听
# serverSocket用来倾听连接的请求,connectionSockte用来传递数据
connectionSockte, address = serverSocket.accept()

message = connectionSockte.recv(1024).decode() # 转成字符串
print('got the message from the client : ' + message)

modifedMessage = message.upper().encode() # 转换成大写,再转成Byte
connectionSockte.send(modifedMessage) # 发送

connectionSockte.close() # 释放资源