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()
    待完善
  • 相关阅读:
    C# 中自定义配置
    git 打标签
    状态模式
    组合模式
    intellij自动生成java代码注释(java文件注释和方法注释)
    git版本回退
    Error:Unable to make the module:***, related gradle configuration was not found. Please, re-import the Gradle project and try again.
    Typo: In word 拼写检查
    javax.persistence.EntityNotFoundException: Unable to find报错
    报错org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet"
  • 原文地址:https://www.cnblogs.com/chrysanthemum/p/11502957.html
Copyright © 2011-2022 走看看