套接字的详细介绍会在另一篇博文指出,此片博文主要是python套接字的简单客户端编写。

两种套接字介绍:

  • 面向连接的套接字:面向连接的套接字提供序列化,可靠的和不重复的数据交付。面向连接是可靠的传输,数据能够完成无误的传输到对方。传输数据时需要先建立连接(TCP的三次握手),然后传输数据。在编写套接字时使用参数 socket.SOCK_STREAM 来指定建立的TCP套接字对象
  • 无连接的套接字:通信开始前不需要建立连接。数据传输过程中无法保持它的顺序性,可靠性和重复性。数据传输前,不用先建立连接。在编写套接字时使用参数 socket.SOCK_DGRAM 来指定建立UDP套接字对象。

TCP  C/S编写:

  服务端编写:(伪代码)

    •   导入socket模块
    •        建立对应的TCP 套接字对象
    •        绑定要监听的主机和端口
    •        开启监听,调用listen函数
    •        开启和客户端的交互

      客户端编写: (伪代码)

    •   导入socket模块
    •        建立对应的TCP 套接字对象
    •        调用connect方法建立到server端的连接
    •        进行和服务端的交互

通过实际例子来编写c/s端程序:

python网络编程之一
# *-* coding:utf-8 *-*
# Auth: wangxz

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("localhost", 5969))
s.listen(5)

while True: # 这个循环保证客户端退出后,可以有另一个客户端接入
    tcp_server, addr = s.accept() 
    # accept函数返回的是一个元组,一个是与客户端建立的新的tcp连接,另一个客户端连接的ip和端口
    print("The client is %s at %s port " % addr ) #
    while True: # 这个循环保证每个客户端与服务持续交互
        print("The communication system".center(50, "-"))
        data = tcp_server.recv(1024)
        if not data: break # 判断如果接收的数据为空,则跳出循环,
        # print(data.decode(encoding='ascii'))
        print(data)
s.close()
server

相关文章:

  • 2021-05-27
  • 2022-12-23
  • 2021-12-15
  • 2021-12-13
  • 2022-01-11
猜你喜欢
  • 2022-01-07
  • 2021-12-05
  • 2021-11-11
  • 2022-02-21
相关资源
相似解决方案