• 程序媛计划——python socket通信


    定义

      socket 是进程间的一种通信方式,可以实现不同主机间的数据传输

    #写服务期端程序server.py

    #实现服务器向客户端连接

     1 #!/usr/bin/env python
     2 #coding:utf-8
     3 import socket
     4 s= socket.socket()
     5 #127.0.0.1是本地主机,1234是随意设置到一个端口号
     6 s.bind(('127.0.0.1',1234))  #绑定端口号为1234
     7 
     8 #等待客户端连接
     9 s.listen(5)
    10 while True:
    11     c, addr= s.accept() #连接后会得到connect和一个address
    12     print u"连接地址为",addr
    13     c.send("成功连接至服务器")  #向客户端发送消息
    14     c.close()   #关闭连接

    #效果:运行成功后cosole应该是没有任何显示的

    #可能会出现端口被占用的情况

    #解决措施

    #再新建一个client.py

    1 #!/usr/bin/env python
    2 #coding:utf-8
    3 import socket
    4 s=socket.socket()
    5 s.connect(('127.0.0.1',1234))
    #s.recv(1024)表示每次最多接收1024字节的数据
    6 print s.recv(1024) #这里收到的就是server的s.send()中的内容 7 s.close()

    #在客户端运行代码后发现服务器端和客户端console显示如下,表示连接成功

    #服务器端成功打印出链接地址(server.py中的addr)

    #模拟客户端向服务器端发送消息

    #服务器端

     1 #!/usr/bin/env python
     2 #coding:utf-8
     3 import socket
     4 s= socket.socket()
     5 #127.0.0.1是本地主机,1234是随意设置到一个端口号
     6 s.bind(('127.0.0.1',1234))  #绑定端口号为1234
     7 
     8 #等待客户端连接
     9 s.listen(5)
    10 while True:
    11     c, addr= s.accept() #连接后会得到connect和一个address
    12     print u"连接地址为",addr
    13     c.send("成功连接至服务器")  #向客户端发送消息
    14 
    15     #eval将收到的字符串转化为dict
    16     dict=eval(c.recv(1024))
    17     if dict:
    18         print "收到的日记为",dict
    19         print "日记的标题为",dict['title']
    20         print "日记的内容为",dict['content']
    21 
    22 
    23 
    24     c.close()   #关闭连接

    #客户端

     1 #!/usr/bin/env python
     2 #coding:utf-8
     3 import socket
     4 s= socket.socket()
     5 #127.0.0.1是本地主机,1234是随意设置到一个端口号
     6 s.bind(('127.0.0.1',1234))  #绑定端口号为1234
     7 
     8 #等待客户端连接
     9 s.listen(5)
    10 while True:
    11     c, addr= s.accept() #连接后会得到connect和一个address
    12     print u"连接地址为",addr
    13     c.send("成功连接至服务器")  #向客户端发送消息
    14 
    15     #eval将收到的字符串转化为dict
    16     dict=eval(c.recv(1024))
    17     if dict:
    18         print "收到的日记为",dict
    19         print "日记的标题为",dict['title']
    20         print "日记的内容为",dict['content']
    21 
    22 
    23 
    24     c.close()   #关闭连接

    #先运行服务器端,再运行客户端

    #效果

  • 相关阅读:
    谷歌的教育软件
    一些视频教程网站推荐
    TexturePacker 介绍
    Flash Builder常用快捷键
    flash builder 4 编译器参数
    Flex中神奇的快速辅助 Ctrl+1
    iPhone 真机调试应用程序
    说说Xcode4中xib绑定的原理
    springboot + mybatis + gradle项目构建过程
    Elasticsearch Xpack认证
  • 原文地址:https://www.cnblogs.com/IcarusYu/p/7560230.html
Copyright © 2020-2023  润新知