欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用Python制作基于Socket网内通信程序 (2)

程序员文章站 2022-03-18 19:17:57
...

Socket通信,在小编理解看来,就是一个在相同网内实现的简单的信息交互

其连接过程可分为三个步骤:
1.服务器监听

2.客户端请求

3.连接确认

身为小白的我,在学长的指导下,并对其原先的代码进行了简单的改变,在此发博文记录一下

客户端的改进代码:

##  main.c
## 
##
##  Created by 黄日超、蔡明胤 on 2018/7/16.
##  Copyright © 2018年 黄日超 . All rights reserved.
##
from socket import *
 
host  = '192.168.0.***' # 这是对方的ip,将后三个数字隐去了
port = 16141 #接口选择大于10000的,避免冲突
bufsize = 102400  #定义缓冲大小
 
addr = (host,port) # 元祖形式
udpClient = socket(AF_INET,SOCK_DGRAM) #创建客户端
 
while True:
    
    data = input('发送消息给对方:')
    data +="1"
    data += input('发送消息给对方:')
    data +="2" 
    data = data.encode(encoding="utf-8") 
    udpClient.sendto(data,addr) # 发送数据
    data=data.decode(encoding="utf-8")

    data,addr = udpClient.recvfrom(bufsize) #接收数据和返回地址
    data=data.decode(encoding="utf-8")
    print('收到对方的消息',data[0:data.find('1')])
    
    print('收到对方的消息',data[data.find('1')+1:data.find('2')])
    
 
udpClient.close()

服务端的改进代码:


##  main.c
##  test3
##
##  Created by 黄日超、舒琛特 on 2018/5/6.
##  Copyright © 2018年 黄日超 . All rights reserved.
##
from socket import *

host ='' #监听所有的ip
port = 16141 #接口必须一致
bufsize = 102400
addr =(host,port) 
 
udpServer = socket(AF_INET,SOCK_DGRAM)
udpServer.bind(addr) #开始监听
print('------开始聊天------')
while True:
    #print(1)
    data,addr=udpServer.recvfrom(bufsize) #接收数据和返回地址
    #处理数据
    #print(2)
    data  = data.decode(encoding='utf-8').upper()
    print('收到对方的消息:'+data[0:data.find('1')])
    print('收到对方的消息:'+data[data.find('1')+1:data.find('2')])
    
    data =input('发送消息给对方:')
    data+="1"
    data+=input('发送消息给对方:')
    data+="2"
    udpServer.sendto(data.encode(encoding='utf-8'),addr)
    #发送数据
udpServer.close()

其改进的内容实现了服务端在接受了客户端发送的信息后能够进行回复,并且将其能够自主识别两行消息并进行换行。

在刚刚开始建立的时候,会弹出防火墙拦截消息(这个只要点同意就ok了,当初小编默认关闭了防火墙拦截消息,导致服务端一直无法接收到客户端传输过来的信息)

这是客户端发送消息,以及收到消息的示例截图

用Python制作基于Socket网内通信程序 (2)

 

版权声明: 借鉴于黄日超学长的CSDN博客 https://blog.csdn.net/weixin_41474319/article/details/80890787

相关标签: socket