最简单的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()
相关文章
|
5天前
|
存储 网络协议 算法
UDP 协议和 TCP 协议
本文介绍了UDP和TCP协议的基本结构与特性。UDP协议具有简单的报文结构,包括报头和载荷,报头由源端口、目的端口、报文长度和校验和组成。UDP使用CRC校验和来检测传输错误。相比之下,TCP协议提供更可靠的传输服务,其结构复杂,包含序列号、确认序号和标志位等字段。TCP通过确认应答和超时重传来保证数据传输的可靠性,并采用三次握手建立连接,四次挥手断开连接,确保通信的稳定性和完整性。
28 1
UDP 协议和 TCP 协议
|
1月前
|
消息中间件 网络协议 算法
UDP 和 TCP 哪个更好?
【8月更文挑战第23天】
90 0
|
4天前
|
存储 网络协议 算法
UDP & TCP 超详解
本文详细介绍了UDP与TCP协议的相关知识。首先阐述了UDP协议结构,包括其报文格式、各字段含义及其CRC校验和机制。接着深入探讨了TCP协议,涵盖其协议结构、确认应答机制、超时重传策略、三次握手与四次挥手过程,以及滑动窗口、流量控制和拥塞控制等关键技术。最后分析了TCP在异常情况下的处理机制,如进程崩溃、主机关机、掉电和网线断开等情况。
36 5
|
9天前
|
网络协议
TCP和UDP区别
简介: TCP和UDP区别
|
23天前
|
C语言
C语言 网络编程(八)并发的UDP服务端 以进程完成功能
这段代码展示了如何使用多进程处理 UDP 客户端和服务端通信。客户端通过发送登录请求与服务端建立连接,并与服务端新建的子进程进行数据交换。服务端则负责接收请求,验证登录信息,并创建子进程处理客户端的具体请求。子进程会创建一个新的套接字与客户端通信,实现数据收发功能。此方案有效利用了多进程的优势,提高了系统的并发处理能力。
|
23天前
|
C语言
C语言 网络编程(九)并发的UDP服务端 以线程完成功能
这是一个基于UDP协议的客户端和服务端程序,其中服务端采用多线程并发处理客户端请求。客户端通过UDP向服务端发送登录请求,并根据登录结果与服务端的新子线程进行后续交互。服务端在主线程中接收客户端请求并创建新线程处理登录验证及后续通信,子线程创建新的套接字并与客户端进行数据交换。该程序展示了如何利用线程和UDP实现简单的并发服务器架构。
|
1月前
|
网络协议 网络安全 Python
电脑中 TCP/UDP 端口是否开放的测试:令人意想不到的神奇策略等你发现!
【8月更文挑战第19天】在网络管理和维护中,常需确认TCP/UDP端口是否开放以确保服务运行顺畅。端口如同计算机对外通信的“门”,TCP提供可靠连接,UDP则快速但无连接。测试端口是否开放的方法多样:可用`telnet`测试TCP端口,如`telnet localhost 80`;UDP测试较复杂,可用`nc`工具,如`nc -u -z localhost 53`。此外,也有在线工具可供选择,但需确保其安全性。
47 1
|
1月前
|
缓存 网络协议 算法
TCP、UDP是如何流量、拥塞控制的?今天一口气讲透!
TCP、UDP是如何流量、拥塞控制的?今天一口气讲透!
|
1月前
|
网络协议 Windows
在电脑上测试TCP/UDP端口是否开放,还是得网络大佬这招厉害!
在电脑上测试TCP/UDP端口是否开放,还是得网络大佬这招厉害!
|
20天前
|
网络协议
网络协议概览:HTTP、UDP、TCP与IP
理解这些基本的网络协议对于任何网络专业人员都是至关重要的,它们不仅是网络通信的基础,也是构建更复杂网络服务和应用的基石。网络技术的不断发展可能会带来新的协议和标准,但这些基本协议的核心概念和原理将继续是理解和创新网络技术的关键。
42 0