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