zoukankan      html  css  js  c++  java
  • socket | tcp客户端 tcp服务器 udp客户端 udp 服务器 创建方法

    tcp服务器

    #coding=utf-8
    '''
    这里是tcp服务器端,要先启动
    '''
    import socket
    import threading
    
    bind_ip  = "0.0.0.0"
    bind_port = 9999
    
    '''
    "0.0.0.0"
    在服务器端它表示
    本机上的所有IPV4地址,如果一个服务有多个IP地址(192.168.1.2和10.1.1.12),那么我们如果设置的监听地址是0.0.0.0那么我们无论是通过IP192.168.1.2还是10.1.1.12都是可以访问该服务的。
    在路由中,0.0.0.0表示的是默认路由,即当路由表中没有找到完全匹配的路由的时候所对应的路由。
    '''
    
    # 创建服务器端的套接字
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    server.bind((bind_ip,bind_port))
    
    server.listen(5)
    
    print "[*] Listening on %s:%d" % (bind_ip,bind_port)
    
    # 用来跟客户端通信的
    def handle_client(client_socket):
    
        # 接受客户端的信息
        request = client_socket.recv(1024)
        
        print "[*] Received: %s" % request    
    
        # 向客户端发送信息
        client_socket.send("这里是服务器端!")
        '''
        getpeername()用于得到与某个套接字关联的外地协议地址,说白了就是得到客户端
        '''
        print client_socket.getpeername()
        client_socket.close()
    
    
    while True:
    
        client,addr = server.accept()
        
        print "[*] Accepted connection from: %s:%d" % (addr[0],addr[1])
    
        # 用多线程
        client_handler = threading.Thread(target=handle_client,args=(client,))
        client_handler.start()

    tcp客户端:

    #coding=utf-8
    '''
    这里是tcpd的客户端
    需要服务器端先打开端口
    '''
    import socket
    # 创建套接字对象 确定要连接的服务器
    # target_host=input("请输入目标ip:")
    # # print target_host
    # target_port=input("请输入目标端口:")
    target_host="127.0.0.1"
    target_port=9999
    clinet = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    
    clinet.connect((target_host,target_port))
    clinet.send("这里是tcp客户端")
    response = clinet.recv(4096)
    print response

    udp客户端:

    #coding=utf-8
    '''
    这里是udp的客户端
    需要服务器端先打开端口
    '''
    import socket
    
    target_host="127.0.0.1"
    target_port=9999
    clinet = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    
    clinet.sendto("这里是udp客户端",(target_host,target_port))
    response,addr = clinet.recvfrom(4096)
    print "udp客户单开始执行"
    print response
    print addr

    udp服务器:

    # coding=utf-8
    '''
    import socket
    import threading
    from time import *
    bind_ip = "0.0.0.0"
    bind_port = 9999
    
    
    # 创建服务器端的套接字
    server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    server.bind((bind_ip, bind_port))
    
    
    print "[*] Listening on %s:%d" % (bind_ip, bind_port)
    
    while True:
    
        data,addr=server.recvfrom(1024)
        server.sendto("这里是udp客户端")
        print "接收:",data
    
    server.close()
    待完善
  • 相关阅读:
    在 Eclipse Workbench 之外使用 Eclipse GUI
    GB2312,GBK,Unicode
    木偶一之推荐系统
    Matlab:任意矩阵计算分布密度(海明距离的分布密度)
    live555在arm linux下的交叉编译,并下载的Arm板播放H264文件
    java设计模式之原型模式
    HDU 1102
    poj3661另一种做法(滚动数组)
    基于QT的小游戏细菌病毒战
    某代码查看器的保护突破
  • 原文地址:https://www.cnblogs.com/chrysanthemum/p/11502957.html
Copyright © 2011-2022 走看看