zoukankan      html  css  js  c++  java
  • 用Python实现Socket编程【多测师】

    1、socket的定义:
    Socket的英文原义是“孔”或“插座”,网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket;

    建立网络通信连接至少要一对端口号(socket),socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力;

    套接字:源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字;其用于标识客户端请求的服务器和服务;

    upfile1576237499300.png

     

    2、python编写socket的步骤;

    1) 创建socket对象,调用socket构造函数:
    socket = socket.socket( family, type )
    2) 将socket绑定到指定地址
    socket.bind( address )
    3) 使用socket套接字的listen方法接收连接请求
    socket.listen( backlog )
    4) 服务器套接字通过socket的accept方法等待客户请求一个连接
    connection, address = socket.accept()
    5) 处理阶段,服务器和客户端通过send和recv方法通信(传输 数据)  send--发送信息, recv--接收数据;
    6) 传输结束,服务器调用socket的close方法关闭连接;


    3、python编写client的步骤:

    1) 创建一个socket以连接服务器:
    socket = socket.socket( family, type )
    2) 使用socket的connect方法连接服务器
    socket.connect( (host,port) )
    3) 处理阶段,客户和服务器将通过send方法和recv方法通信;
    4) 传输结束,客户通过调用socket的close方法关闭连接;


    4、服务端代码:

    #_*_ coding:utf-8 _*_
    #服务端
    #导入socket模块
    import socket
    #创建TCP类型的socket
    host = '127.0.0.1'
    port = 8997                        *端口号每连接一次换一个连就ok了!
    #建立一个socket对象,AF_INET说明将使用标准的IPv4地址,SOCK_STREAM说明是一个TCP客户端
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.bind((host, port))
    s.listen(2)
    conn,addr= s.accept()#创建socket和客户端通信;
    while 1:
        print "Connected by",addr
        conn.sendall("yes sir")
        print conn.recv(1024)
    conn.close()
       # conn.sendall('reply')

    upfile1576237539751.png

     
    5,客户端代码:

    #_*_ coding:utf-8 _*_
    #客户端
    #导入socket模块
    import socket
    #创建TCP类型的socket
    c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    #建立到指定IP地址,端口的TCP连接
    c.connect(('127.0.0.1', 8997))      *端口号每连接一次换一个连就ok了!
    while 1:
        data = raw_input("please go out!:")
        c.send(data)#发送数据
        result = c.recv(1024)#接受的结果传给result
        print result #输出接受到的结果
    #关闭连接
    c.close()


    upfile1576237564688.png

     

  • 相关阅读:
    Qt MFC 混合编程的问题
    DECLARE_MESSAGE_MAP用法
    DECLARE_DYNCREATE与DECLARE_DYNAMIC区别
    Qt unsigned char* (uchar*) 转为QImage
    C++ SafeArrayAccessData,SafeArrayUnaccessData使用
    C++ 实现 COM → IUnknown → 接口
    C++ COM编程之IUnknown接口
    C++ COM三大接口:IUnknown、IClassFactory、IDispatch。
    C++ COM组件QueryInterface函数
    C++ COM组件的AddRef和Release()方法使用
  • 原文地址:https://www.cnblogs.com/xiaoshubass/p/12865172.html
Copyright © 2011-2022 走看看