socket编程

发布时间:2020-08-07 18:13:27 作者:Winter
来源:ITPUB博客 阅读:149
1.socket编程的概念

# 客户端示例代码
import socket
# socket.AF_INET, socket.SOCK_STREAM默认参数
socket_instance = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket_instance.connect(('www.baidu.com', 80))

2.socket( )类详解
3.如何编写服务器socket端

接下来我们讲解一下TCP服务端和TCP客户端代码示例,大家记得看代码的注释,方便大家理解代码:


# TCP服务端代码示例
import socket
from pprint import pprint
# 创建TCP连接
socket_instance = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# bind方法的参数是ip和端口组成的元组表示address
socket_instance.bind(('127.0.0.1', 9000))
# 操作系统可以挂起的最大连接数,如果同一时间的连接数超过5,拒绝其他的连接
socket_instance.listen(5)
# 死循环,循环接收新的客户端连接
while True:
    # 接收客户端的请求,且获取新socket对象和客户端信息
    new_socket, client_addr = socket_instance.accept()  # 阻塞,等待握手
    # 循环接收已连接的客户端发送的数据
    while True:
        # 从缓存区中读取1024字节信息 ,使用decode()方法进行解码
        data = new_socket.recv(1024).decode()   # 阻塞的
        # 返回客户端的一下信息
        pprint(data)
        # 返回客户端地址 ('127.0.0.1', 51978)
        pprint(client_addr)
        # 把服务器的数据发送回客户端,使用encode()方法把字符串编码成二进制
        new_socket.sendall('服务器端已经拿到你的消息'.encode())


# TCP客户端代码实现
import socket
# 创建TCP连接
socket_instance = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket_instance.connect(('127.0.0.1', 9000))   # 进行三次握手
while True:
    cmd = input("请输入您想说的话:")
    socket_instance.send(cmd.encode())   # 把数据发送到服务端
    data = socket_instance.recv(1024)  
    print(data.decode())

现在我们已经把TCP的服务端和客户端都写好了(写在两个不同的.py文件中),那我们来运行代码看一下效果,首先运行服务器端代码的.py文件(鼠标右键->Run test.py),然后再运行客户端代码(鼠标右键->Run test1.py),客户端会提示要我们输入想说的话,如图:
socket编程
socket编程

需要注意的是我们不能通过TCP的客户端连接UDP服务器,也不能通过UDP的客户端连接TCP的服务器,也就是客户端和服务端的socket协议必须一样

4.UDP服务器和客户端端代码实现

# UDP服务器端代码实现
import socket
# 创建UDP连接
socket_instance = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
socket_instance.bind(('127.0.0.1', 9000))
# 循环接收新的客户端连接
while True:
    # 接收客户端的请求,且获取新socket对象和客户端信息
    data, client_addr = socket_instance.recvfrom(1024)
    print(data.decode())
    socket_instance.sendto('Server has receive your data'.encode(), client_addr)


# UDP客户端代码实现
import socket
# 创建socket实例
socket_instance = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while True:
    data = input("请输入您想说的话:")
    socket_instance.sendto(data.encode(), ('127.0.0.1', 9000))
    data, server_addr = socket_instance.recvfrom(1024)
    print(data.decode())

然后依次运行服务器端代码和客户端代码,步骤和TCP中的运行差不多

5.UDP 服务器端的实现步骤

1.创建 socket 对象;
2.向socket 对象绑定服务器地址;
3.进入与客户端交互数据的循环阶段;
4.接收客户端发来的数据(包括 bytes 对象 data,以及客户端的 IP 地址和端口号 addr,其中 addr 为二元组 (host, port);
5.打印接收信息,表示从地址为 addr 的客户端接收到数据);
6.关闭;

6.UDP客户端的实现步骤

1.创建 socket 对象;
2.初始化 UDP 服务器的地址;
3.进入与服务器交互数据的循环阶段;
4.等待用户输入数据;
5.向服务器端发送接收数据;
6.关闭套接字,不再向服务器发送数据;

7.TCP 和UDP的区别有哪些
8.服务器端socket实例对象创建连接的方法有:
9.客户端socket实例对象创建连接的方法有:
10.客户端和服务器端socket实例对象都有的方法:

参考: https://www.9xkd.com/user/plan-view.html?id=1374569434

推荐阅读:
  1. python socket编程
  2. socket编程学

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

socket 编程 et

上一篇:Cloud Foundry Session Affinity(Sticky Session)的实现

下一篇:说说MySQL 主从复制吧

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》