网络编程初识

# 服务端.py####################################

import socket

#建服务端socket对象
server = socket.socket()

# 绑定IP和端口
server.bind(('192.168.13.155',8000))

# 后边可以等5个人
server.listen(5)

print('服务端准备开始接收客户端的连接')
# 等待客户端来连接,如果没人来就傻傻的等待。
# conn是客户端和服务端连接的对象(伞),服务端以后要通过该对象进行收发数据。
# addr是客户端的地址信息。
# #### 阻塞,只有有客户端进行连接,则获取客户端连接然后开始进行通信。
conn,addr = server.accept()

print('已经有人连接上了,客户端信息:',conn,addr)


# 通过对象去获取(王晓东通过伞给我发送的消息)
# 1024表示:服务端通过(伞)获取数据时,一次性最多拿1024字节。
data = conn.recv(1024)
print('已经有人发来消息了',data)


# 服务端通过连接对象(伞)给客户端回复了一个消息。
conn.send(b'stop')

# 与客户端断开连接(放开那把伞)
conn.close()

# 关闭服务端的服务
server.close()
# 客户端##############################################

import socket

client = socket.socket()

# 王晓东向服务端发起连接请求(递伞)
# 阻塞,去连接,直到连接成功后才会继续向下走。
client.connect(('192.168.13.155',8000))


# # 链接上服务端后,向服务端发送消息
client.send(b'hello')


# 王晓东等待服务端给他发送消息
data = client.recv(1024)  #最多一次性接收1024字节
print(data)

# 关闭自己
client.close()

下面开始真正的表演

#真正的服务端
import
socket #模块 server = socket.socket() server.bind(('192.168.13.155',8001)) #服务端电脑的IP地址,和端口数, server.listen(5) #最多可以排队等候多少人 while True: conn,addr = server.accept() #等待客户端连接,返回一个元组,最少两个元素 # 发送和接收的都是字节类型 while True: data = conn.recv(1024) # 阻塞 接收客户端发来的信息 if data == b'exit': break response = data + b' SB' conn.send(response) #返回给客户端信息 conn.close() #关闭此次通话
#                    真正的客户端
import
socket sk = socket.socket() sk.connect(('192.168.13.155',8001)) while True: name = input("请输入姓名:") sk.send(name.encode('utf-8')) # 字节 if name == 'exit': break response = sk.recv(1024) # 字节 print(response.decode('utf-8')) sk.close()

总结,一定先运行客户端,不能让客户端和服务端同时等待

猜你喜欢

转载自www.cnblogs.com/lxx7/p/9579401.html
今日推荐