python核心 socket程式設計實現聊天室

2021-08-19 09:15:20 字數 1825 閱讀 4356

1.udp方式

from threading import thread

from socket import *

def recvdata():

while true:

recvinfo = udpsocket.recvfrom(1024)

print('\r>>%s:%s' %(recvinfo[1], recvinfo[0]))

print11('<<')

def senddata():

while true:

sendinfo = input('<<')

udpsocket.sendto(sendinfo.encode('utf-8'), (destip, destport))

udpsocket = none

destip = ''

destport = 0

def main():

udpsocket = socket(af_inet, sock_dgram)

udpsocket.bind(('', 4567))

destip = input('請輸入對方的ip:')

destpost = int(input('請輸入對方的埠號:'))

tr = thread(target=recvdata)

ts = thread(target=senddata)

tr.start()

ts.start()

tr.join()

ts.join()

if __name__=='__main__':

main()

2.tcp方式

(1)客戶端

from socket import *

# 建立套接字

seversocket = socket(af_inet, sock_stream)

# 繫結埠

seversocket.bind(("", 8899))

# 監聽事件

serversocket.listen(5)

while true:

# 接收請求

clientsocket, clientinfo = serversocket.accept()

while true:

recvdata = clientsocket.recv(1024)

if len(recvdata)>0:

print("%s:%s" %(str(clientinfo), recvdata))

else:

break

senddata = raw_input('send:')

clientsocket.send(senddata)

# 關閉套接字

clientsocket.close()

(2)客戶端

from socket import *

# 建立套接字

clientsocket = socket(af_inet, sock_stream)

# 連線

clientscoket.connect(('127.0.0.1', 8989))

clientsocket.send('haha'.encode('utf-8'))

recvdata = clientsocket.recv(1024)

print('recvdata:%s' %recvdata)

# 關閉套接字

clientsocket.close()

新手編核心

作為linux學習者,第一次編譯核心對我來說是一件辛苦又相當有趣的事情,以下是我編譯核心的過程 1.安裝vmware workstation v5.5,其序列號可以從網上找到 很多的喲 2.安裝ubuntuv7 為什麼要使用ubuntu?因為看重了ubuntu可以自動從網上獲取所需開發軟體,並 自動...

android學習筆記 Socket編

android學習筆記 socket程式設計 inonoclas 十三 socket程式設計 socket基本通訊模型 使用基於tcp協議的socket 使用基於udp協議的socket socket套接字 用於描述ip位址和埠是乙個通訊鏈的控制代碼 以你公用程式通過 套接字 向網路發出請求或者應答...

silverlight中的socket程式設計注意事項

1.粘包 目前sl中的socket只能用tcp ip協議,而tcp ip本質是乙個 流 協議,也就是說資料無邊界,傳送的就是一連串的位元組 沒有資料報的概念 因此連續傳送時有所謂的 粘包 現象,詳細解釋如下 比如你設定傳送緩衝區的大小是512位元組,如果 在相隔時間極短的情況下 連續傳送次資料,第一...