为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
套接字Socket与套接字编程,Python3 进阶教程(新版)教程-慕课网
章节
课签
笔记
占位
占位

套接字Socket与套接字编程

要进行网络通信,需要建立起通信双方的连接,连接的双方分别称为客户端和服务端,在Python中,使用套接字socket来建立起网络连接。
套接字包含在socket模块中:

import socket
socket.socket()

对于客户端和服务端,都是使用socket来建立连接的,但是在使用行为上,客户端和服务端会有一些不一样。
服务端建立需要四个步骤:新建socket、绑定IP和端口(bind)、监听连接(listen)、接受连接(accept)。
客户端建立则简单一些,仅需两个步骤:新建socket、连接服务端(connect)。
当网络连接上以后,客户端和服务端就可以进行数据通信了,套接字通过send()函数发送数据,通过recv()函数接收数据。


先看服务端的过程,新建一个server.py的文件:

import socket

server = socket.socket() # 1. 新建socket
server.bind(('127.0.0.1', 8999)) # 2. 绑定IP和端口(其中127.0.0.1为本机回环IP)
server.listen(5) # 3. 监听连接
s, addr = server.accept() # 4. 接受连接
print('connect addr:{}'.format(addr))
content =s.recv(1024)
print(str(content, encoding='utf-8'))  # 接受来自客户端的消息,并编码打印出来
s.close()

如上,服务端就编写完毕,接下来是编写客户端,新建一个client.py的文件:

import socket

client = socket.socket() # 1. 新建socket
client.connect(('127.0.0.1', 8999)) # 2. 连接服务端(注意,IP和端口要和服务端一致)
client.send(bytes('Hello World. Hello Socket', encoding='utf-8')) # 发送内容,注意发送的是字节字符串。
client.close()

接着在一个终端先运行服务端:

python server.py

然后再在另外一个终端运行客户端:

python client.py

在服务端的终端,将会输出以下信息:

connect addr:('127.0.0.1', 50382)
b'Hello World. Hello Socket'

任务

请改造server.py和client.py文件,实现一个echo服务器,使得client.py可以循环接收用户输入并发送给服务端,服务端在收到消息后,也把消息原样返回给client。

?不会了怎么办

1. 请同学在本地编写代码练习

2. 通过input()可以接收用户的输入。

参考答案:

服务端:

import socket

server = socket.socket() # 1. 新建socket
server.bind(('127.0.0.1', 8999)) # 2. 绑定IP和端口(其中127.0.0.1为本机回环IP)
server.listen(5) # 3. 监听连接
s, addr = server.accept() # 4. 接受连接
print('connect addr:{}'.format(addr))
while True:
    content =s.recv(1024)
    if len(content) == 0:
        break
    s.send(content)
    print(str(content, encoding='utf-8')) # 接受来自客户端的消息,并打印出来

s.close()

客户端:

import socket

client = socket.socket() # 1. 新建socket
client.connect(('127.0.0.1', 8999)) # 2. 连接服务端(注意,IP和端口要和服务端一致)
while True:
    content = input('>>> ')
    client.send(bytes(content, 'utf-8')) # 发送内容,注意发送的是字节字符串。
    content = client.recv(1024)
    print(str(content, encoding='utf-8'))

client.close()
||

写笔记

公开笔记
提交
||

请验证,完成请求

由于请求次数过多,请先验证,完成再次请求

收藏课程后,能更快找到我哦~

使用 Ctrl+D 可将课程添加到书签

举报

0/150
提交
取消