• python socket编程(初级)


    客户端编程:

      首先要创建socket,用python中socket模板中的socket函数就可以了

      import socket

      s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

      socket函数后面要带两个参数:

        Address Family : 可以选择AF_INET(用于Internet进程间通信)或者AF_UNIX(同一台机器间通信)

        Type:套接字类型,可以是 SOCK_STREAM(流式套接字,主要用于 TCP 协议)或者SOCK_DGRAM(数据报套接字,主要用于 UDP 协议)

      我们知道了服务器的IP地址和端口号,我就可以用connect函数连接

      s.connect(IP,PORT)

      连接上了之后,我们就可以向服务器发送数据了,

      message = data  # data是你要发送的数据

      发送完之后就,我们就要接受数据

      reply = s.recv(1024)  #1024是一次可以接受的数据大小

      最后我们把连接端口就可以了

      s.close()

    客服端全部的代码如下:

     1 #!usr/bin/env python
     2 #coding:utf-8
     3 
     4 import socket
     5 
     6 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
     7 print 'Socket Created'
     8 host = 'www.google.com'
     9 port = 80
    10 remote_ip = socket.gethostbyname(host)              
    11 #获取host的IP地址,gethostbyname是在你不知道网页的IP地址的情况下可以获取网址的IP,一般在自己电脑上的时候是不用的
    12 print remote_ip
    13 s.connect((remote_ip,port))
    14 message = 'GET / HTTP/1.1
    
    '                  
    15 #这是一个HTTP请求网页内容的命令
    16 s.sendall(message)
    17 print 'Message send successfully'
    18 reply = s.recv(4096)
    19 print reply
    20 s.close()

    服务器和客户端有点不一样

    服务器主要做的是:

    1. 打开socket;

    2.绑定到特定的地址和端口上;

    3.监听连接;

    4.建立连接;

    5.接受或者发送数据

    具体代码如下:

    #!usr/bin/env python
    #coding:utf-8
    
    import socket
    
    HOST = '127.0.0.1'
    PORT = 8888
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.bind((HOST,PORT))
    s.listen(5)
    while True:
                 conn,addr = s.accept()
                 data = conn.recv(1024)
                 conn.sendall('welcome !')
                 print data
                 if data == 'exit':   如果接受的data = exit的话就退出循环
                              break
    conn.close()
    s.close()

    这样就差不多了,剩下的就是一些细节方面的问题了. 我一开始写的时候写了好久,照着别人的写总是会出错,关键是别人写的却可以运行,心塞!

    主要参考的是:

    http://www.cnblogs.com/hazir/p/python_socket_programming.html

        

  • 相关阅读:
    插件开发取路径
    使用SWT模拟鼠标键盘事件
    简单RCP框架源码分析
    dom4j中使用xpath解析带命名空间的xml文件,取不到节点的解决办法
    log4j不能输出配置文件问题的解决。
    SWT中定时器的一种特殊实现方式/SWT中线程互访时display.asyncExec/display.syncExec...程序死掉无响应的解决办法
    Eclipse插件开发中对于外部Jar包和类文件引用的处理(彻底解决插件开发中的NoClassDefFoundError问题)
    zk 3.6数据绑定
    PythonExcel 模块对比
    去除数组中重复元素
  • 原文地址:https://www.cnblogs.com/114811yayi/p/5374971.html
Copyright © 2020-2023  润新知