zoukankan      html  css  js  c++  java
  • python socket 模拟tcp通讯

    对于tcp server 端的创建而言, 分为如下步骤: 

     
    1,创建socket对象(socket):其中俩个参数分别为
        Address Family(如AF_INET为ipv4),AF_INET6为ipv6,AF_UNIX为unix域协议簇). 
        socket类型(如SOCK_STREAM为tcp,SOCK_DGRAM为udp)
    2,绑定服务器地址(bind) : 参数为服务器地址二元组 也就是套接字 
    3,监听(listen): 参数为允许的连接数 
    4,等待请求(accpet): 建立一个连接,等待客户端
    5,接收数据(recv,recvfrom ,recvfrom_into ,recv_into)  
    6,发送数据(send ,senfall ,sendto) 
    7,关闭连接(close) 
     
     
    代码: 
     
     
    #! /usr/bin/python
    # -*- coding: utf-8 -*-
    import socket
    sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    server_address = ("127.0.0.1",12345)
    print "Staring up on %s:%s" %  server_address
    sock.bind(server_address)
    sock.listen(5)
     
    while True:
        print "waiting .........."
        connetion,client_address = sock.accept()
        try:
            print  "Connection from ",client_address
            data = connetion.recv(1024)
            print "Receive '%s'" % data
        finally:
            connetion.close()
     

     

    对于tcp client端而言 , 分为以下几个步骤:

    1创建socket对象( socket) : 同server端
    2,连接服务器(connect) : 参数为服务器地址二元组
    3,发送和接收数据: 同server端
    4,关闭连接 : 同server端
     
     
    代码: 
    #! /usr/bin/python
    # -*- coding: utf-8 -*-
    import socket
    sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    def check_tcp_status(ip,port):
     
        sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        server_address = (ip,port)
        print "connecting to %s:%s" % server_address,port
        sock.connect(server_address)
     
        message = raw_input("pleas input: ")
        print "Sending '%s'" % message
        sock.sendall(message)
        print "Closing socket"
        sock.close()
     
    if __name__ == "__main__":
        print check_tcp_status("127.0.0.1",12345)
     
     





    本文是纯属个人学习理解,如有遗漏误导,请大神果断指正......
  • 相关阅读:
    hdu2844 Coins 多重背包
    Android笔记之网络状态推断
    TinyAdmin前端展现框架
    DeepLearning to digit recognizer in kaggle
    Oracle学习(十二):存储过程/存储函数
    【BZOJ1029】【JSOI2007】【建筑抢修】【贪心+堆】
    【HDOJ 1009】 CRB and String
    一些类的说明
    常用指令
    常用英语词汇
  • 原文地址:https://www.cnblogs.com/budongshu/p/49750e9e48b351bcb25e4aecb0cf2932.html
Copyright © 2011-2022 走看看