相关文章推荐
乖乖的拐杖  ·  After deploying an ...·  3 月前    · 
腹黑的豆浆  ·  BeanDefinitionOverride ...·  9 月前    · 
socket變數名稱 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #TCP宣告
socket變數名稱 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #UDP宣告
  • bind(host, port)
  • 用於伺服器端需監聽的IP位址和Port。
  • host : IP位址
  • prot : port號
  • socket變數名稱.bind(("127.0.0.1",8888))
    
  • listen(value)
  • 用於伺服器端最多可接受多少socket串接。
  • value : 最大值
  • socket變數名稱.listen(5)
    
  • accept()
  • 用於伺服器端接收串接,並會回傳(client,address)串接對象與IP位址資訊。
  • client,addr = socket變數名稱.accept() #client存串接對象、addr存連線資訊
    
  • connect(host, port)
  • 用於客戶端指定要串接的IP位址跟Port號。
  • host : IP位址
  • prot : port號
  • socket變數名稱.connect("127.0.0.1",80)
    

    TCP_socket傳接資料函式

  • send(data)
  • 可用於傳送資料過去給串接對象,回傳值為要送出的字數。
  • socket變數名稱.send("hello!")
    
  • recv(bufsize)
  • 可用於接收資料,回傳值為接收到的資料。
  • bufsize : 為宣告接收最多字數值
  • socket變數名稱.recv(200)
    

    UDP_socket傳接資料函式

  • sendto(data,(addr, port))
  • 可用於傳送資料過去給串接對象,回傳值為要送出的字數。
  • data : 欲傳送之資料字串
  • addr : 欲傳送之IP位址
  • port : 欲傳送之Port號
  • socket變數名稱.sendto("hello!",("127.0.0.1",80))
    
  • recvfrom(bufsize)
  • 可用於接收資料,並會回傳(data,addr)接收到的資料和IP位址資訊。
  • bufsize : 為宣告接收最多字數值
  • data,addr = socket變數名稱.recvfrom(200)
    
  • close()
  • 關閉socket連接
  • socket變數名稱.close()
    

    簡單小實作(Python2)

  • server.py
  • import socket
    bind_ip = "0.0.0.0"
    bind_port = 9999
    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)
    while True:
        client,addr = server.accept()
        print 'Connected by ', addr
        while True:
            data = client.recv(1024)
            print "Client recv data : %s " % (data)
            client.send("ACK!")
    
  • client.py
  • import socket
    HOST = '0.0.0.0'
    PORT = 9999
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((HOST, PORT))
    while True:
        cmd = raw_input("Please input msg:")
        s.send(cmd)
        data = s.recv(1024)
        print "server send : %s " % (data)
    

    一開始server端先打開等待接收,當client端執行後會,server會顯示連線的IP與port