對於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)