1.面向連接方式和無連接方式
面向連接方式,在通信發生之前先建立起一個連接,類似打電話,使用虛擬線路類型的套接字,實現這種連接方式的基本協議是傳輸控制協議(Transmission Control Protocol, TCP)。這種通信方式又叫做“虛擬線路”或”流式套接字“。
代碼如下:
tcpSocket=socket(AF_INET,SOCK_STREAM)
無連接方式,在通信開始前不用建立連接,類似郵遞,使用數據圖類型的套接字,實現這種連接方式的基本協議是用戶數據圖協議(User Datagram Protocol, UDP)。
代碼如下:
udpSocket=socket(AF_INET,SOCK_DGRAM)
2.TCP服務器端代碼
from socket import *
print '***** Now starting server *****'
Host=''
Port=12306
Buffsize=1024
Addr=(Host,Port)
ServerSocket=socket(AF_INET,SOCK_STREAM) #初始化一個TCP套接字
print '* Initing connection...'
ServerSocket.bind(Addr) #綁定到地址綁定到套接字上
ServerSocket.listen(5) #設置和啟動TCP監聽程序,參數指定最多允許多少個客戶連接到服務器
print '* Connection inited...'
while True:
print '* Now waiting for connection...\n'
ClientSocket,addr=ServerSocket.accept() #接受客戶連接(阻斷)
print '* Connected from',addr
ClientSocket.send('Server: Connect successfully')
while True:
data=ClientSocket.recv(Buffsize) #接受TCP消息
print '* Client: ',data
if data == 'quit':
print '\n* Client ',addr,' disconnected'
break
ClientSocket.send('Server: Message[ %s ] send successfully' % data)
#返回信息給客戶端
ClientSocket.close()
ServerSocket.close()