udp與tcp 簡單程式實現聊天

2021-09-26 05:14:21 字數 2079 閱讀 1583

1.用udp進行交流

2.udp資料報模式(寫信的模型)

from socket import *

def main():

# 建立套接字

udp_socket = socket(af_inte,sock_dgram)

# 傳送方的ip與埠

send_addr = ('ip',埠號)

# 繫結埠號

udp_socket.bind(send_addr)

# 傳送內容

send_content = input('傳送的內容')

# 傳送

udp.socket.send(send_content.encode('gb2312'),send_addr)

# 接收資訊

recv_content = udp_socket.recvfrom(1024) # 接收的是元組(第乙個是內容,第二個是ip與埠號)

#列印資料

print(recv_content[0].decode('gb2312'))

# 關閉套接字

udo_socket.close()

if __name__ == '__mian__':

while true:

main()

注意:udp傳送資料是 sendto,接收資料是recvfrom

2.tcp客戶端

嚴格區分客戶端與伺服器

from socket import *

def main():

# 1.建立tcp套接字

tcp_client = socket(af_inet,sock_stream)

# 2.鏈結伺服器

server_ip = '192.168.0.105'

server_port = 8080

server_addr = (server_ip,server_port)

tcp_client.connect(server_addr)

# 3.傳送或接收資料

send_msg = input('請輸入要傳送的資訊: ')

tcp_client.send(send_msg.encode('gb2312'))

recv_msg = tcp_client.recv(1024)

print(recv_msg.decode('gb2312'))

# 4.關閉套接字

tcp_client.close()

if __name__ == '__main__':

main()

注意:tcp傳送資料是send,接收資料是recv

3.tcp伺服器

步驟:1.建立套接字

2.繫結ip和port

3.listen是套接字變成可以被動鏈結

4.accecp等待客戶端的鏈結

5.recv/send接收傳送資料

from socket import *

def main():

# 1.建立套接字

tcp_srever = socket(af_inet,sock_stream)

# 2.繫結ip與port

tcp_srever.bind(('192.168.0.105',8080))

# 3.listen將套接字變成可以被動鏈結的狀態

tcp_srever.listen(128)

# 4.accept等待客戶端的鏈結

client_socket,client_addr = tcp_srever.accept()

# 5.接收資料

recv_msg = client_socket.recv(1024)

print(recv_msg.decode('gb2312'))

client_socket.send('haha'.encode('gb2312'))

# 6.關閉套接字

client_socket.close()

tcp_srever.close()

if __name__ == '__main__':

main()

基於UDP簡單聊天程式

server.c include include include include include include include include include include define server port 8888 define max msg size 1024 void udps re...

Delphi簡單TCP聊天程式

首先上截圖 最近有點無聊,於是將以前寫到一半的聊天程式拿出來改進了一下。delphi自帶兩個控制項 tidtcpserver,tidtcpclient。顧名思義,乙個是伺服器端用的,另乙個是客戶端用的。程式主要思路如下,客戶端程式開始執行時與伺服器端建立連線,使用者登入時向伺服器端傳送login命令...

基於UDP的簡單聊天程式

pragma comment lib,ws2 32.lib include include void main if lobyte wsadata.wversion 1 hibyte wsadata.wversion 1 socket socksrv socket af inet,sock dgra...