码迷,mamicode.com
首页 > 其他好文 > 详细

socket实现文件间通信的基本流程

时间:2019-10-22 12:56:40      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:style   ip地址   解码   send   list   服务器端   sock   str   utf-8   

#TCP协议实现(发送消息的顺序无要求)(以conn为对象发送和接收消息)(字节流)
#-------serve层
import socket
import time
sk=socket.socket()
sk.bind((10.70.2.143,8080))                       #1.服务器地址 2.服务器端口,0~65535范围,但是0~1023最好不要用
sk.listen()                                         #监听连接(所有电话集中在这里)
while 1:
    conn,addr=sk.accept()                           #conn为客户端的ip地址,addr为客户端的端口(开始一个一个循环接电话)
    while 1:
        str_msg=conn.recv(1024).decode(utf-8)     #1024为传递数据的大小,recv为需要和谁通信就用其recv,比如说和这个人通电话;中文解码
        print(str_msg)
        if str_msg == q:
            break;
        #服务器输入
        msg_s = input(">>>")
        conn.send(msg_s.encode(utf-8))
        if msg_s == q:
            break;
    conn.close();                                   #可以理解为挂断这个人的电话,但是并不关闭服务器(进入下一个循环,即接听下一个电话)
sk.close()                                          #关闭服务器(即使有其他电话打进来也毫无作用)



#-------client层
import socket
sk = socket.socket()
sk.connect((10.70.2.143,8080))                        #1.服务器的IP 2.服务器的端口
while 1:
    msg_s = input(>>>)
    sk.send(msg_s.encode(utf-8))                      #传中文需要编码为utf-8格式
    if msg_s == q:
        break
    msg_r = sk.recv(1024).decode(utf-8)
    if msg_r == q:
        break
    print(msg_r)
sk.close()

#---------------------------------------------------------------------
#UDP协议实现(必须是客户端先发消息)(以addr为对象发送和接收消息)(允许一个服务器同时和多个客户端通信)
#-------server层
import socket
sk = socket.socket(type=socket.SOCK_DGRAM)# udp协议
sk.bind((10.70.2.143,8080))
while 1:
    msg_r,addr = sk.recvfrom(1024)# 接收来自于哪里的消息
    print(msg_r.decode(utf-8),addr)
    msg_s = input((>>>))
    sk.sendto(msg_s.encode(utf-8),addr)# 发给谁的消息
sk.close()



#-------client层
import socket
sk = socket.socket(type=socket.SOCK_DGRAM)
while 1:
    msg_s = input(>>>)
    sk.sendto(msg_s.encode(utf-8),(10.70.2.143,8080))
    msg_r,addr = sk.recvfrom(1024)
    print(msg_r.decode(utf-8))
sk.close()

 

socket实现文件间通信的基本流程

标签:style   ip地址   解码   send   list   服务器端   sock   str   utf-8   

原文地址:https://www.cnblogs.com/god-for-speed/p/11719017.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!