最简单的tcp客户端和服务端 还有udp

简介: 最简单的tcp客户端和服务端 还有udp

tcp服务器:

# -*- coding: utf-8 -*-
"""
Created on Tue May 26 21:39:55 2020

@author: Administrator
"""
import socket
#创建套接字
tcp_server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#绑定IP和port
address=('',8080)
#listen使套接字变为可被动连接
tcp_server_socket.bind(address)
tcp_server_socket.listen(128)

#accept等待客户端链接
while True:
    
    client_addr,a=tcp_server_socket.accept()
    print(client_addr)
    
    #recv/send接收或发送数据
    while True:
        
        recv_data=client_addr.recv(1024)
        print(recv_data)
#        发过来数据会解堵塞
#        客户端关闭链接也会解堵塞此时为空
        if recv_data:
            
            client_addr.send("服务器已收到".encode("utf-8"))
        else:
            
            client_addr.close()
            break
tcp_server_socket.close()

View Code

tcp客户端:

# -*- coding: utf-8 -*-
"""
Created on Tue May 26 21:13:26 2020

@author: Administrator
"""
import socket
#创建链接字
tcp_client_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#目的信息
server_ip="192.168.236.129"
server_port=8080
#链接服务器
tcp_client_socket.connect((server_ip,server_port))
#提示用户输入数据
send_data="hello"
#发送
tcp_client_socket.send(send_data.encode("utf-8"))
#接受对方发过来的数据,最大1024
recvdata=tcp_client_socket.recv(1024)
print(recvdata)
#关闭连接
tcp_client_socket.close()

View Code

udp

## -*- coding: utf-8 -*-
#"""
#Created on Tue May 26 10:53:22 2020
#
#@author: Administrator
#"""
#
##导入模块
#import socket
##创建socket
#skt  = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#skt.bind(('',8080))
#while True:
#    
#    #创建发送消息和发送目标
#    msg = input()
#    addr = ('192.168.236.128',8080)
#    k=bytes(msg, encoding="utf8")
#    skt.sendto(k,addr)
#    
##    接收数据:
#    data = skt.recvfrom(1024)
##    print(data)
#    s2 = str(data[0], encoding="UTF-8")
#    print("             "+s2)
#   
#skt.close()

#!/usr/bin/python3

import threading
import time
import socket


class Server_Thread(threading.Thread):
    def __init__(self,threadID,name,skt):
        threading.Thread.__init__(self)
        self.threadID=threadID
        self.name=name
        self.skt=skt
    def run(self):
        while True:
            
            data = self.skt.recvfrom(1024)
        #    print(data)
            s2 = str(data[0], encoding="UTF-8")
            print("             "+self.name+":"+s2)
class Client_Thread(threading.Thread):
    def __init__(self,threadID,name,skt):
        threading.Thread.__init__(self)
        self.threadID=threadID
        self.name=name
        self.skt=skt
    def run(self):
        while True:
            
         #创建发送消息和发送目标
            msg = input()
            addr = ('192.168.236.128',8080)
            k=bytes(msg, encoding="utf8")
            self.skt.sendto(k,addr)
def main():
    
    skt  = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    skt.bind(('',8081))
    # 创建新线程
    thread1 = Client_Thread(1, "windows",skt)
    thread2 = Server_Thread(2, "linux",skt)
    
    # 开启新线程
    thread1.start()
    thread2.start()
    thread1.join()
    thread2.join()
    skt.close()

if __name__=="__main__":
    main()
相关文章
|
7月前
|
网络协议 安全 网络安全
什么是TCP/UDP/HTTP?它们如何影响你的内网穿透体验?
数据的传输离不开各种协议,它们就像现实世界中的交通规则,规定了数据如何打包、寻址、传输和接收。对于使用内网穿透的用户来说,理解TCP、UDP和HTTP这些基础协议的特点,能帮助你更好地理解其性能表现,并选择最适合的配置方案。
|
9月前
|
网络协议 安全 网络安全
详细阐述 TCP、UDP、ICMPv4 和 ICMPv6 协议-以及防火墙端口原理优雅草卓伊凡
详细阐述 TCP、UDP、ICMPv4 和 ICMPv6 协议-以及防火墙端口原理优雅草卓伊凡
627 2
|
12月前
|
网络协议 Java 开发工具
全平台开源即时通讯IM框架MobileIMSDK:7端+TCP/UDP/WebSocket协议,鸿蒙NEXT端已发布,5.7K Stars
全平台开源即时通讯IM框架MobileIMSDK:7端+TCP/UDP/WebSocket协议,鸿蒙NEXT端已发布,5.7K Stars
669 1
|
网络协议 算法 网络性能优化
|
监控 网络协议 网络性能优化
不再困惑!一文搞懂TCP与UDP的所有区别
本文介绍网络基础中TCP与UDP的区别及其应用场景。TCP是面向连接、可靠传输的协议,适用于HTTP、FTP等需要保证数据完整性的场景;UDP是无连接、不可靠但速度快的协议,适合DNS、RIP等对实时性要求高的应用。文章通过对比两者在连接方式、可靠性、速度、流量控制和数据包大小等方面的差异,帮助读者理解其各自特点与适用场景。
|
网络协议 前端开发 物联网
TCP和UDP区别?
本文首发于微信公众号“前端徐徐”,详细介绍了TCP和UDP两种传输层协议的核心概念、连接性和握手过程、数据传输和可靠性、延迟和效率、应用场景及头部开销。TCP面向连接、可靠、有序,适用于网页浏览、文件传输等;UDP无连接、低延迟、高效,适用于实时音视频传输、在线游戏等。
1193 1
TCP和UDP区别?
|
存储 网络协议 安全
用于 syslog 收集的协议:TCP、UDP、RELP
系统日志是从Linux/Unix设备及网络设备生成的日志,可通过syslog服务器集中管理。日志传输支持UDP、TCP和RELP协议。UDP无连接且不可靠,不推荐使用;TCP可靠,常用于rsyslog和syslog-ng;RELP提供可靠传输和反向确认。集中管理日志有助于故障排除和安全审计,EventLog Analyzer等工具可自动收集、解析和分析日志。
1101 2
|
网络协议 网络性能优化 数据处理
深入解析:TCP与UDP的核心技术差异
在网络通信的世界里,TCP(传输控制协议)和UDP(用户数据报协议)是两种核心的传输层协议,它们在确保数据传输的可靠性、效率和实时性方面扮演着不同的角色。本文将深入探讨这两种协议的技术差异,并探讨它们在不同应用场景下的适用性。
575 4
|
监控 网络协议 网络性能优化
网络通信的核心选择:TCP与UDP协议深度解析
在网络通信领域,TCP(传输控制协议)和UDP(用户数据报协议)是两种基础且截然不同的传输层协议。它们各自的特点和适用场景对于网络工程师和开发者来说至关重要。本文将深入探讨TCP和UDP的核心区别,并分析它们在实际应用中的选择依据。
742 3
|
缓存 负载均衡 网络协议
面试:TCP、UDP如何解决丢包问题
TCP、UDP如何解决丢包问题。TCP:基于数据块传输/数据分片、对失序数据包重新排序以及去重、流量控制(滑动窗口)、拥塞控制、自主重传ARQ;UDP:程序执行后马上开始监听、控制报文大小、每个分割块的长度小于MTU