zoukankan      html  css  js  c++  java
  • 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

        

  • 相关阅读:
    关于postgresql——常用操作指令
    linux 下查看机器是cpu是几核的
    ASP.NET跨平台实践:无需安装Mono的Jexus“独立版”
    .NET平台开源项目速览(4).NET文档生成工具ADB及使用
    Hadoop学习---安装部署
    c# 模拟表单提交,post form 上传文件、大数据内容
    半小时学会上传本地项目到github
    统计网卡TX(发送)RX(接受)流量脚本
    mysql mysqldump只导出表结构或只导出数据的实现方法
    psutil--跨平台的进程管理
  • 原文地址:https://www.cnblogs.com/114811yayi/p/5374971.html
Copyright © 2011-2022 走看看