Python之网络编程

Tyrant 2018年12月30日 •  Python 123 •  0

Python之网络编程

每一门编程语言最经典的就是实现网络Socket编程,Python肯定也有这方面的库和函数,下面就来谈谈Python的Socket编程

ps:这篇文章是博主在火车上码的,有些水,实在是没事干,大佬勿喷(手动滑稽)

1.本次模块

socket

2.UDP通信

server.py

#!/usr/bin/env python
# coding=utf-8

import socket
# 创建UDP套接字
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 定义ip地址及端口
local_addr = ("",7709)
# 绑定地址
s.bind(local_addr)
# while循环实现一直接收信息
while True :
    # 接收消息,返回的是消息以及ip地址端口
    recv_data = s.recvfrom(1024)
    # 对消息进行解码
    msg = recv_data[0].decode("utf-8")
    # 判断,如果退出,服务器退出
    if msg == "exit":
        break;
    print(msg)
# 关闭套接字
s.close()

client.py

#!/usr/bin/env python
# coding=utf-8
import socket
# 创建套接字
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 初始化服务器端口地址
send_addr = ("",7709)
# while循环
while True:
    # 中断发送消息
    send_data = input("请输入要发送的消息:")
    # 发送到服务器
    s.sendto(send_data.encode("utf-8"),send_addr)
    # 判断是否退出
    if send_data == "exit":
        break;
# 关闭套接字        
s.close()

3.TCP

server.py

#!/usr/bin/env python
# coding=utf-8

import socket

# 设置服务器的绑定地址及端口
server_addr = ("",7709)

# 创建tcp套接字
server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

# 绑定本地地址及端口
server_socket.bind(server_addr)

# 将tcp套接字转换为被动链接状态
server_socket.listen(128)

while True :
# while循环实现多个客户端进行连接
    print("服务器等待连接~~~~")
    # 每当一个客户端进行连接的时候,创建一个新的套接字,并获得客户端ip地址
    client_socket,client_addr = server_socket.accept()
    print("ip:%s的客户端已经连接" % (str(client_addr)))
    # 当一个客户端进行连接时,一直循环接收这个客户端的信息
    while True :
        recv_data = client_socket.recv(1024)
        print("%s:%s" %(str(client_addr),recv_data.decode("utf-8")))
        if recv_data:
            pass
            if recv_data.decode("utf-8") == "exit":
                exit()
        else :
            break;
    print("ip:%s的客户端已经断开" % (str(client_addr)))
    client_socket.close()

client.py

#!/usr/bin/env python
# coding=utf-8
import socket
# 创建套接字 tcp套接字
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 初始化ip地址及端口
server_addr = ("",7709)
# 连接套接字
s.connect(server_addr)
# 死循环,当信息收到exit时候退出循环,断开连接
while True:
    
    send_data = input("请输入要发送的数据:")

    s.send(send_data.encode("utf-8"))

    if send_data == "exit":
        break;
# 关闭套接字    
s.close()

4.Tips

QQ:770925351

Email:770925351@qq.com

WeChat:tc770925351

Tags:Python
上一篇
打赏
下一篇

添加新评论