python socket实例

服务端套接字函数

s.bind() 绑定(主机,端口号)到套接字 、s.listen() 开始TCP监听、s.accept() 被动接受TCP客户的连接,(阻塞式)等待连接的到来。

s.close()  关闭服务器。con.close()关闭链接

import socket
 
# 明确配置变量
ip_port = ('127.0.0.1',8080)
back_log = 5
buffer_size = 1024
# 创建一个TCP套接字
ser = socket.socket(socket.AF_INET,socket.SOCK_STREAM)   # 套接字类型AF_INET, socket.SOCK_STREAM   tcp协议,基于流式的协议
ser.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)  # 对socket的配置重用ip和端口号
# 绑定端口号
ser.bind(ip_port)  #  写哪个ip就要运行在哪台机器上
# 设置半连接池
ser.listen(back_log)  # 最多可以连接多少个客户端
while 1:
    # 阻塞等待,创建连接
    con,address = ser.accept()  # 在这个位置进行等待,监听端口号 
    while 1:
        try:
            # 接受套接字的大小,怎么发就怎么收
            msg = con.recv(buffer_size)
            if msg.decode('utf-8') == '1':
                # 断开连接
                con.close()
            print('服务器收到消息',msg.decode('utf-8'))
        except Exception as e:
            break
# 关闭服务器
ser.close()

 

客户端:p.connect(ip地址,端口号)  连接服务器

import socket
 
p = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
p.connect(('127.0.0.1',8080))
while 1:
    msg = input('please input')
    # 防止输入空消息
    if not msg:
        continue
    p.send(msg.encode('utf-8'))  # 收发消息一定要二进制,记得编码
    if msg == '1':
        break
p.close()

 

 

简单一次发送接收版:

#server端
import socket
tcpserver = socket.socket(socket.AF_INET,socket.SOCK_STREAM)  #建立
tcpserver.bind(("127.0.0.1",10000))   #绑定
tcpserver.listen(5)  #监听
conn,addr = tcpserver.accept()  #阻塞等待连接
data = conn.recv(1024)   #接收
print(data.decode("utf-8"))
conn.send(data.upper())  #发送
conn.close()   #关闭连接
tcpserver.close()  #关闭
 
#client端
import socket
tcpclient = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
tcpclient.connect(("127.0.0.1",10000))  #连接
data=input(">:")
tcpclient.send(data.encode("utf-8"))  #发送
ret=tcpclient.recv(1024)   #接收
print(ret.decode("utf-8"))
tcpclient.close()

 

 

循环接收发送信息示例:

#循环接收发送信息版
 
#server端
import socket
tcpserver = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
tcpserver.bind(("127.0.0.1", 10000))
tcpserver.listen(5)
while True:
    conn,addr = tcpserver.accept()
    print(conn)
    while True:
        try:
            data = conn.recv(1024)
            print('.....',data.decode("utf-8"))
            conn.send(data.upper())
        except Exception:
            break
    conn.close()
tcpserver.close()
 
#客户端
import socket
tcpclient = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
tcpclient.connect(("127.0.0.1",10000))
while 1:
    while 1:
        data = input('>>>').strip()
        tcpclient.send(data.encode('utf-8'))
 
        ret = tcpclient.recv(1024)
 
        print(ret.decode('utf-8'))

 

 

 相关连接:

https://blog.csdn.net/weixin_43347550/article/details/106199850 ....................................socket实现文件传输

https://blog.csdn.net/s1054436218/article/details/78076845 ...........................................Socket实现文件上传和下载

https://www.jianshu.com/p/2a4b859e05df .........................................................................socket实现文件传输

posted on 2021-07-07 20:12  chen_2987  阅读(332)  评论(0)    收藏  举报

导航