• python socket网络编程


    socket套接字:为了使2个不同应用程序进行通信。

    两种套接字类型:基于文件的和基于网络的

    1.基于文件(AF_LOCAL或AF_UNIX):代表Unix

    2.面向网络(AF_INET):代表因特网

    面向连接的套接字(SOCK_STREAM):TCP

    面向无连接的套接字(SOCK_DGRAM):UDP

    Python中的网络编程socket()模块

    TCP 网络程序

    serice服务端

     1 # -*- coding: utf-8 -*-
     2 from socket import *
     3 from time import ctime
     4 
     5 HOST = ''  ##为空表示bind()函数可以绑定在所有有效的地址上
     6 PORT=21567
     7 BUFSIZ = 1024  ##缓冲区大小  1K
     8 ADDR = (HOST,PORT)
     9 
    10 tcpSerSock = socket(AF_INET,SOCK_STREAM)
    11 tcpSerSock.bind(ADDR)
    12 tcpSerSock.listen(5)  ##允许最多多少个链接 后来的会被拒绝掉
    13 
    14 while True:
    15     print 'waiting for connection...'
    16     tcpCliSock,addr = tcpSerSock.accept()  ##阻塞式线程
    17     print '...connected from:',addr
    18 
    19     while True:
    20         data = tcpCliSock.recv(BUFSIZ)
    21         if not data:
    22             break
    23         tcpCliSock.send('(%s) %s' % (ctime(),data))
    24     tcpCliSock.close()
    25 tcpSerSock.close()
    View Code

    client 客户端

     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     3 
     4 from socket import *
     5 HOST = 'localhost'  ##
     6 PORT=21517
     7 BUFSIZ = 1024  ##缓冲区大小  1K
     8 ADDR = (HOST,PORT)
     9 
    10 tcpCliSock = socket(AF_INET,SOCK_STREAM)
    11 tcpCliSock.connect(ADDR)
    12 
    13 while True:
    14     data = raw_input('> ')
    15     if not data:
    16         break
    17     tcpCliSock.send(data)
    18     data = tcpCliSock.recv(BUFSIZ)
    19     if not data:
    20         break
    21     print data
    22 tcpCliSock.close()

    UDP程序 

    service 服务端

     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     3 
     4 from socket import *
     5 from time import ctime
     6 
     7 HOST=''
     8 PORT=21567
     9 BUFSIZ = 1024
    10 ADDR = (HOST,PORT)
    11 
    12 udpSerSock = socket(AF_INET,SOCK_DGRAM)
    13 udpSerSock.bind(ADDR)
    14 
    15 while True:
    16     print 'waiting for message....'
    17     data , addr = udpSerSock.recvfrom(BUFSIZ)
    18     udpSerSock.sendto('[%s] %s' % (ctime(),data),addr)
    19     print '...received from and returned to:',addr
    20 udpSerSock.close()
    View Code

    client 客户端

     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     3 
     4 from socket import *
     5 
     6 HOST='localhost'
     7 PORT=21567
     8 BUFSIZ=1024
     9 ADDR = (HOST,PORT)
    10 
    11 udpCliSock= socket(AF_INET,SOCK_DGRAM)
    12 
    13 while True:
    14     data = raw_input('> ')
    15     if not data:
    16         break
    17     udpCliSock.sendto(data,ADDR)
    18     data,ADDR = udpCliSock.recvfrom(BUFSIZ)
    19     if not data:
    20         break
    21     print data
    22 
    23 udpCliSock.close()
    View Code

    SocketService 通讯程序

    服务端

     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     3 
     4 from SocketServer import (TCPServer as TCP,StreamRequestHandler as SRH)
     5 from time import ctime
     6 
     7 HOST = ''
     8 PORT = 21569
     9 ADDR = (HOST,PORT)
    10 
    11 class MyRequestHandler(SRH):
    12     def handle(self):
    13         print '...connected from:',self.client_address
    14         self.wfile.write('[%s] %s' % (ctime(),self.rfile.readline()))
    15 
    16 tcpServ = TCP(ADDR,MyRequestHandler)
    17 print 'waiting for connection...'
    18 tcpServ.serve_forever()
    View Code

    客户端

     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     3 
     4 from socket import *
     5 HOST = 'localhost'  ##
     6 # HOST = '192.168.0.51'
     7 PORT=21569
     8 BUFSIZ = 1024  ##缓冲区大小  1K
     9 ADDR = (HOST,PORT)
    10 
    11 while True:
    12     tcpCliSock = socket(AF_INET, SOCK_STREAM)
    13     tcpCliSock.connect(ADDR)
    14     data = raw_input('> ')
    15     if not data:
    16         break
    17     tcpCliSock.send('%s
    ' % data)
    18     data = tcpCliSock.recv(BUFSIZ)
    19     if not data:
    20         break
    21     print data.strip()
    22     tcpCliSock.close()
    View Code
  • 相关阅读:
    vi 或 vim 常用命令(简单够用了)
    linux 常用命令
    ssh连接远程linux服务器
    tomcat优化系列:修改运行内存
    html学习笔记二
    html学习笔记一
    我的subLime的快捷键
    CentOS tomcat 安装与自启动
    CentOS 安装jdk-8u111-linux-x64.tar.gz方法
    CentOS 6 默认启动进入 图形或命令窗口
  • 原文地址:https://www.cnblogs.com/seablog/p/7041513.html
Copyright © 2020-2023  润新知