python-socket

Posted wangzihong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python-socket相关的知识,希望对你有一定的参考价值。

socket

#client
import socket
import socket
client = socket.socket() #定义协议类型 声明socket类型同时生产链接对象
client.connect((localhost,9999)) #传入一个元祖类型的地址
client.send("上海".encode(utf-8)) #传数据
data = client.recv(1024) #接受数据 1024字节
print("recv:",data.decode()) #打印数据
client.close()

#server
import socket
server = socket.socket()
server.bind((localhost,9999)) #绑定端口
server.listen() #监听端口
print("开始等待")
conn,addr = server.accept() #等待 返回两个标记 连接标记位,连接地址
#conn就是客户端连接过来服务端为其生成的一个实例
print(conn,addr)

print("有客户接入")
data = conn.recv(1024) #接受数据

print("recv:",data)
conn.send(data.upper())
server.close()

发送和接受多次

#server
import socket
server = socket.socket()
server.bind((localhost,9999)) #绑定端口
server.listen() #监听端口

print("开始等待")
conn, addr = server.accept()  # 等待 返回两个标记 连接标记位,连接地址
# conn就是客户端连接过来服务端为其生成的一个实例
print(conn, addr)
print("有客户接入")

while True:
    data = conn.recv(1024) #接受数据
    print("recv:",data)
    conn.send(data)
server.close()

#client
import socket
import socket
client = socket.socket() #定义协议类型 声明socket类型同时生产链接对象
client.connect((localhost,9999)) #传入一个元祖类型的地址

while True:
    msg = input(">>>").strip()
    if len(msg) == 0:continue
    client.send(msg.encode(utf-8)) #传数据
    data = client.recv(1024) #接受数据 1024字节
    print("recv:",data.decode()) #打印数据
client.close()

服务端:

 1.声明实例 写入地址簇 family address

  2.绑定ip地址和端口

  3.开始监听

  4.conn,addr = server.accept() 没有连接阻塞

  5.循环

  6.conn.recv(8192) 不超过8192 8k 接受数据

  7.将接受的数据发送出去 conn.send

客户端:

  1.声明实例

  2.开始连接 client.connect((serverip,port))

  3.发送接收数据

import socket,os
server = socket.socket()
server.bind((localhost,9999))
server.listen()

while True:
    conn,addr = server.accept()
    print("new conn:",addr)
    while True:
        data = conn.recv(1024)
        if not data:
            print("客户端已断开")
            break
        print("执行指令",data)
        cmd_res = os.popen(data.decode()).read()
        if len(cmd_res) == 0: #客户端输入错误时长度为0
            cmd_res = "cmd has no output..."
        conn.send(cmd_res.encode(utf-8))

import  socket
client = socket.socket()
client.connect((localhost,9999))

while True:
    cmd = input(">>>").strip()
    if len(cmd) == 0 :continue
    client.send(cmd.encode(utf-8))
    cmd_res = client.recv(1024)
    print(cmd_res.decode())

client.close()

 

以上是关于python-socket的主要内容,如果未能解决你的问题,请参考以下文章

python-socket模块

python-socket2

python-socket编程简例

攻克python-socket

python-socket1

python-socket模块学习