美文网首页
内网日记

内网日记

作者: 果三代 | 来源:发表于2015-11-21 00:18 被阅读27次

建立内网日记是为了实现交互的效果,使用的协议是比较简单的UDP协议,通过socket进行通讯功能,实现C/S 模型,这里有必要说一下socket,在加入开智学院之前我是根本不知道什么是socket,经过在网上一通搜索,socket大概说的是,就像电话的听筒,只有在client和server两端都建立socket才能实现client与server之间的通讯,并且UDP的特点就是信息传输快,缺点是容易丢包,不过先不管这些了,开始coding.......

使用的编程语言是python2.7.10,调试环境是win7下的powershell ,主要要实现以下功能

  • client每发一行信息server都有显示出信息的内容
  • 每一行的信息都要保存在本地server端
  • client输入指定的命令,server端就要把信息传输给client并打印出来

接下来是socket的基本建立过程

  • server
    import socket
    server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    server_addr = ('127.0.0.1', 6666)
    size = 1024
    server.bind(server_addr)

      while 1: #服务端保持一直接收信息
             data, addr = server.recvfrom(size)
             if data == 'q':#接收到client端q指令退出while关闭服务器
                   print 'quit...'
                   break
            elif data == 'h':
                 daily = open('socket_daily.log','r').read()
                 server.sendto(daily, addr)
            elif data == '':
                 print "nothing, client is closing..."
           else:
                 print 'data:', data, 'from',addr, 'save to socket_daily.log ...'
                daily = open("socket_daily.log", 'a+')
                current_time = time.strftime('[%Y-%m-%d %H:%M:%S]')
                daily.write(current_time +' '+ data +'\n')
                daily.close()
    
      server.close()
    
  • client

     # -*- coding:utf-8 -*-
      import socket
    
      client =socket.socket(socket.AF_INET,socket.SOCK_DGRAM)#UDP
      server_addr = ('127.0.0.1',6666)
      print '''    [h] for history
      [q] close server
      [ENTRE] close client
      write your daily now...    '''
    
      while 1:
            message = raw_input('>>')#输入q关闭服务器
            client.sendto(message, server_addr)
            if message == '':#退出while关闭client
                 break
            elif message == 'h':
                 daily = open('socket_daily.log')
                 print '*'*10,'history','*'*10
                 print daily.read()
                 print '*'*10,'history','*'*10
    
     client.close()
    

代码一共没有多少行,基本实现了client 与server的交互环境,比较有意思的地方是,client与server间的互想通讯,每个server接收到client的信息后就要进行判断并做出反应,这里在设置socket时也要注意,server端要bind到一个address和port上,这样client才知道把数据包发到哪里,而与server相对应的接口也就是client的address和port就不一定是固定的了,是随机的,可能每次新建立起来的通讯用到的都不一样,只要记住server是固定的就行了,还有一点就是client与server是通过 ** 互相传递过来的信息做为判断来执行一系列动作的 **

下面是测试效果

QQ截图20151120230910.png

相关文章

  • 内网日记

    建立内网日记是为了实现交互的效果,使用的协议是比较简单的UDP协议,通过socket进行通讯功能,实现C/S 模型...

  • 程序猿常用网站大全(一)

    国内网站➕国内网站➕国内网站➕国内网站➕国内网站➕国内网站➕国内网站 1.慕课网 慕课网 2.百度传课 百度传课 ...

  • Sunny-Ngrok实现自定义域名内网穿透

    内网穿透 + Sunny-Ngrok + 自定义域名 1、内网穿透 1.1 内网IP:内网IP,过多官方的解释这里...

  • 内网端口穿透

    内网端口穿透 内网穿透在实际生活中,我们经常会在内网里部署服务让外网访问内网应用。这里我用的花生壳免费的内网穿透。...

  • iptables简单配置DMZ

    要求 内网可以访问外网 内网可以访问DMZ区 外网不能访问内网 外网能访问DMZ区的服务 DMZ区不能访问内网 D...

  • NATAPP内网穿透工具的使用教程

    内网穿透: 内网穿透简单来说就是将内网外网通过natapp隧道打通,让内网的数据让外网可以获取。 项目场景: 在本...

  • 查看Linux服务器公网&内网IP地址

    公网IP Or 内网IP Or 外网ip和内网ip的区别是什么? 内网IP:顾名思义,就是在内网中使用的ip地址,...

  • 物资app下载

    IOS 外网 内网 电力外网 Android 外网 内网 电力外网

  • 自建NAS系列04——网络服务

    内网穿透 花生壳 公网服务器与frp 内网穿透 内网穿透就是将自己内网中的服务映射到公网ip,达到公网可访问的目的...

  • (二)frp内网穿透访问内网数据库

    frp的安装介绍 已经在第一节文章有介绍请参考 (一)frp内网穿透ssh登录内网ip服务器 通过内网穿透访问内网...

网友评论

      本文标题:内网日记

      本文链接:https://www.haomeiwen.com/subject/lbglhttx.html