使用python编写你自己的聊天工具

服务端:

import socket
print("I am server")
#创建socket对象
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # socket family:socket族
        # AF_INET    ipv4
        # AF_INET6   ipv6
        # AF_UNIX    Linux系统间数据传输
    # socket type
        # SOCK_STREAM  tcp
        #SOCK_DGRAM    udp

sock.bind(("127.0.0.1", 8000))
    # 双元素元组
    # 元素一:ip
    #元素二:端口 数字

sock.listen(5)
    #监听队列长度

con, add = sock.accept()  # 接受
    # con:通信对象,也是一个socket对象
    # add:地址,身份

print(add)
con.send("hello world".encode())  # 发送的需要是字节
recv = con.recv(512)     # 单次接受的大小:字节
print(recv)
sock.close()

优化版服务端:

import socket
print("I am server")
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(("127.0.0.1", 8000))
sock.listen(5)
while True:
    con, add = sock.accept()
    print("%s:%s  is connect"%add)
    while True:
        sendData = input(">>>").encode()
        con.send(sendData)
        if sendData == "break".encode():
            break
        recv = con.recv(512)  
        print(recv.decode())
        if recv == "break":
            break
sock.close()

客户端:

import socket
print("I am client")
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

sock.connect(("127.0.0.1", 8000))

print(sock.recv(512))

sock.send("hello world I am server".encode())

sock.close()

优化版客户端:

import socket
print("I am client")
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

sock.connect(("127.0.0.1", 8000))

while True:
    recv = sock.recv(512).decode()
    print(recv)
    if recv == "break":
        break
    sendData = input(">>>").encode()
    if sendData == "break":
        break
    sock.send(sendData)

sock.close()

 

你可能感兴趣的:(python基础)