Python使用socket实现通信

socket可以实现两个程序(一边是服务端,一边是客户端)的通信,一台电脑两个程序通信可以或者局域网里的两台电脑可以通信,但是公网的或不同局域网的两台电脑通信涉及的网关等内容,故本博客只简单说明一台电脑中的两个程序通信。话不多说,直接上代码。

1. 服务端

import socket

server = socket.socket()                      #调用socket模块中的socket类
server.bind(('localhost', 1666))              #绑定本机IP地址,直接使用localhost也可以,并分配一个本机的端口
server.listen(5)                              #监听客户端

exi = ''                                      #结束标志符
while True:
    c, addr = server.accept()                 #会一直等待,直到连接客户端成功
    print('Connect with: ', addr)
    while c:                                  #一直循环,直到客户端关闭
        dat = c.recv(1024).decode('utf-8')    #会一直等待,直到接收客户端数据,并使用utf-8解码
        if dat == 'break':
            exi = 'break'
            break
        print('Reciving data: ', dat)                
        sr = input('Please reply something: ')
        c.send(sr.encode('utf-8'))            #反馈给客户端的数据

    if exi == 'break':
        break
    print('The client lost, waiting to reconnect to other client. ')       

server.close()

2. 客户端

import socket

client = socket.socket()  
client.connect(('localhost', 1666))           #连接到服务端IP地址,本机可直接使用localhost
while True:
    msg = input("Please input something or 'break' to quit: ")
    if not len(msg):
        continue
    client.send(msg.encode('utf-8'))          #发送给服务端的数据
    if msg == 'break':
        break
    print(client.recv(1024).decode('utf-8'))  #接受服务端反馈的数据并使用utf-8解码

client.close()

3. 程序运行效果

先执行服务端程序,再运行客户端程序即可,效果如下图所示。

猜你喜欢

转载自blog.csdn.net/yldmkx/article/details/108653191
今日推荐