关于Python网络编程Socket(套接字)

关于Python网络编程Socket(套接字)

1、server.py

#coding=utf-8

# 测试Socket

import socket

server = socket.socket()             #初始化
ip_port = ('127.0.0.1', 8081)
server.bind(ip_port)                 #绑定ip和端口

server.listen(10)                    #监听,设置最大数量是10
print("开始等待接收客户端数据----")
while True:
    conn, addr = server.accept()     #获取客户端地址
    print(conn, addr)
    print("客户端来数据了")
    while True:
        data = conn.recv(1024)       #接收数据
        print("接受的数据:", data)
        if not data:
            print("客户端丢失")
            break
        conn.send(data)              #返回数据    

server.close()                       #关闭socket

2、client.py

#coding=utf-8

# 测试Socket

import socket

client = socket.socket()        #初始化
ip_port = ('127.0.0.1', 8081)   #ip和端口
client.connect(ip_port)         #连接服务器

while True:
    msg = input(">>:").strip()
    if len(msg) == 0 : continue
    client.send(msg.encode())   #发送数据

    data = client.recv(1024)    #接收数据

    print("返回的数据:", data.decode())

client.close()

3、开启两个IDLE (Python 3.7 64-bit),各自执行server.py、client.py。

4、ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。
原因及解决办法:
a、Windows 防火墙拦截,需要把Windows 防火墙关闭。进入“控制面板\所有控制面板项\Windows 防火墙”,关闭Windows 防火墙。
b、在Python的IDLE运行客户端和服务器的代码,出现这样的错误,是因为它们公用了同一个进程。打开一个IDLE,运行服务器代码。再打开一个IDLE,运行客户端代码。(注意:是重新打开一个IDLE窗口,而不是在第一步的IDLE窗口Open打开)。这样才可以运行两个进程,实现进程间进行通信。Socket是指同一计算机的进程间或者不同计算机之间的通信。

发表回复

您的电子邮箱地址不会被公开。