• 基于tcp的套接字编程


    一,基础版服务器端客户端(一收一发,只有一个客户端链接)

    服务器端:

     1 #Author : Kelvin
     2 #Date : 2019/1/28 22:10
     3 from socket import *
     4 server=socket.socket(AF_INET,SOCK_STREAM)
     5 server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)  #解决服务器重启时地址被占用的问题
     6 server.bind(("127.0.0.1",8888))
     7 server.listen(5)
     8 print("服务器已经启动...")
     9 conn,addr=server.accept()
    10 res=conn.recv(1024).decode("utf8")
    11 print("服务器:",res)
    12 conn.send("服务器收到请求!".encode())
    13 conn.close()
    14 server.close()

    客户端:

    1 #Author : Kelvin
    2 #Date : 2019/1/28 22:10
    3 import socket
    4 client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    5 client.connect(("127.0.0.1",8888))
    6 client.send("客户端请求连接!".encode())
    7 res=client.recv(1024).decode("utf8")
    8 print("客户端:",res)
    9 client.close()

     

    二,可交流版服务器端客户端(多收多发,只有一个客户端链接)

    服务器端:

     1 #Author : Kelvin
     2 #Date : 2019/1/28 22:10
     3 from socket import *
     4 server=socket.socket(AF_INET,SOCK_STREAM)
     5 server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)  #解决服务器重启时地址被占用的问题
     6 server.bind(("127.0.0.1",8888))
     7 server.listen(5)
     8 print("服务器已经启动...")
     9 conn,addr=server.accept()
    10 while True:
    11     res=conn.recv(1024).decode("utf8")
    12     print("33[1;36;0m服务器接收:33[0m%s"%res)
    13     con=input("回复:")
    14     conn.send(con.encode())
    15 conn.close()
    16 server.close()

    客户端:

     1 #Author : Kelvin
     2 #Date : 2019/1/28 22:10
     3 from socket import *
     4 client=socket.socket(AF_INET,SOCK_STREAM)
     5 client.connect(("127.0.0.1",8888))
     6 while True:
     7     con=input("回复:")
     8     client.send(con.encode())
     9     print("33[1;36;0m客户端:33[0m%s" %con)
    10     res=client.recv(1024).decode("utf8")
    11     print("33[1;36;0m服务器端:33[0m%s"%res)
    12 client.close()

     

    三,多链接版服务器端客户端(多收多发,多个客户端链接)

    服务器端:

     1 #Author : Kelvin
     2 #Date : 2019/1/28 22:10
     3 from socket import *
     4 server=socket.socket(AF_INET,SOCK_STREAM)
     5 server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)  #解决服务器重启时地址被占用的问题
     6 server.bind(("127.0.0.1",8888))
     7 server.listen(5)
     8 while True:
     9     print("服务器已经启动...")
    10     conn,addr=server.accept()
    11     while True:
    12         try:
    13             res=conn.recv(1024).decode("utf8")
    14             print("33[1;36;0m服务器接收:33[0m%s"%res)
    15             con=input("回复:")
    16             conn.send(con.encode())
    17         except Exception:
    18             break
    19     conn.close()
    20 server.close()

    客户端1:

     1 #Author : Kelvin
     2 #Date : 2019/1/28 22:10
     3 import socket
     4 client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
     5 client.connect(("127.0.0.1",8888))
     6 while True:
     7     con=input("回复:")
     8     client.send(con.encode())
     9     print("33[1;36;0m客户端1:33[0m%s" %con)
    10     res=client.recv(1024).decode("utf8")
    11     print("33[1;36;0m服务器端:33[0m%s"%res)
    12 client.close()

    客户端2:

     1 #Author : Kelvin
     2 #Date : 2019/1/28 22:10
     3 import socket
     4 client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
     5 client.connect(("127.0.0.1",8888))
     6 while True:
     7     con=input("回复:")
     8     client.send(con.encode())
     9     print("33[1;36;0m客户端2:33[0m%s" %con)
    10     res=client.recv(1024).decode("utf8")
    11     print("33[1;36;0m服务器端:33[0m%s"%res)
    12 client.close()
  • 相关阅读:
    cb快捷键
    N的阶乘的长度 V2(斯特林近似)
    最大子序列和(Max Sum ,Super Jumping! Jumping! Jumping! )
    关于莫比乌斯和莫比乌斯反演
    最少拦截系统
    set用法详解
    几种数学公式(环排列 母函数 唯一分解定理 卡特兰数 默慈金数 贝尔数 那罗延数)
    最小堆算法
    并查集算法
    dijkstra算法演示
  • 原文地址:https://www.cnblogs.com/sun-10387834/p/10335992.html
Copyright © 2020-2023  润新知