zoukankan      html  css  js  c++  java
  • 基于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()
  • 相关阅读:
    jQuery琐碎
    jQuery文档加载事件
    微信,禁止分享页面
    级联下拉列表
    struts2 result随笔
    C++知识点(四)类与对象,结构体、联合体、枚举类
    C++知识点(三)函数
    剑指offer-二叉树
    LeetCode:Remove Element
    LeetCode:Remove Duplicates from Sorted Array
  • 原文地址:https://www.cnblogs.com/sun-10387834/p/10335992.html
Copyright © 2011-2022 走看看