网络编程之socketserver初识

Server

#!/usr/bin/env python
# @Author   : "Wjl"
# @Date     : 2017/12/22
# @Time     : 11:07
# @SoftWare : PyCharm
# @File     : Server端并发聊天_Server.py

import socketserver

"""
socketserver模块是python为我们写好的一个封装了网络操作相关的模块
比我们自己手写socket方便
"""

class MyServer(socketserver.BaseRequestHandler):  # 必须继承socketserver.BaseRequestHandler

    def handle(self):  # 必须重写父类的handle方法,我们的逻辑就写在handle方法中
        print("服务端启动...")
        while True:
            conn = self.request  # self.request 就等于 TcpSocket.accept() 返回的socket对象
            print(self.client_address)  # self.client_address 就等于 TcpSocket.accept 返回的addr元组
            while True:
                # 将接收到的数据原路返回
                client_data = conn.recv(1024)
                print(str(client_data, "utf8"))
                print("waiting...")
                conn.sendall(client_data)
            conn.close()

if __name__ == ‘__main__‘:
    server = socketserver.ThreadingTCPServer((‘127.0.0.1‘, 8888), MyServer)  # 要实现并发就必须调用ThreadingTCPServer
    server.serve_forever()  # 启动

Client

#!/usr/bin/env python
# @Author   : "Wjl"
# @Date     : 2017/12/22
# @Time     : 11:07
# @SoftWare : PyCharm
# @File     : Server端并发聊天_Client.py

import socket

TcpSocket = socket.socket()

TcpSocket.connect((‘127.0.0.1‘, 8888))

while True:
    user_input = input(‘>>> ‘)
    if user_input == ‘q‘:
        break

    TcpSocket.send(user_input.encode(‘utf-8‘))
    data = TcpSocket.recv(1024)
    print(data.decode(‘utf-8‘))

TcpSocket.close()

原文地址:https://www.cnblogs.com/xiaofengchu/p/8461191.html

时间: 2024-09-30 03:10:34

网络编程之socketserver初识的相关文章

Python网络编程之socketserver实现多并发

利用socketserver实现多并发,socketserver内部会调用socket模块进行功能上的实现 client.py客户端脚本文件内容 #!/usr/bin/env python # _*_ coding:utf-8 _*_ import socket # 创建一个socket对象 obj = socket.socket() # 制定服务端的IP地址和端口 obj.connect(('127.0.0.1', 999, )) # 阻塞,等待服务端发送内容,接受服务端发送过来的内容,最大接

网络编程之socketserver

""" socketserver.py 中的5个基础类 +------------+ | BaseServer | +------------+ | v +-----------+ +------------------+ | TCPServer |------->| UnixStreamServer | +-----------+ +------------------+ | v +-----------+ +--------------------+ | UDPSe

linux网络编程之shutdown() 与 close()函数详解

linux网络编程之shutdown() 与 close()函数详解 参考TCPIP网络编程和UNP: shutdown函数不能关闭套接字,只能关闭输入和输出流,然后发送EOF,假设套接字为A,那么这个函数会关闭所有和A相关的套接字,包括复制的:而close能直接关闭套接字. 1.close()函数 [cpp] view plain copy print? <span style="font-size:13px;">#include<unistd.h> int 

java网络编程之UDP实例

package Socket; import java.net.DatagramPacket; import java.net.InetAddress; public class Dgram { public static DatagramPacket toDatagram(String s, InetAddress destIA, int destPort) { byte[] buf = new byte[s.length() + 1]; s.getBytes(0, s.length(), b

java网络编程之TCP实例

Dgram类 package Socket; import java.net.DatagramPacket; import java.net.InetAddress; public class Dgram { public static DatagramPacket toDatagram(String s, InetAddress destIA, int destPort) { byte[] buf = new byte[s.length() + 1]; s.getBytes(0, s.leng

扯谈网络编程之Tcp SYN flood洪水攻击

简介 TCP协议要经过三次握手才能建立连接: (from wiki) 于是出现了对于握手过程进行的攻击.攻击者发送大量的FIN包,服务器回应(SYN+ACK)包,但是攻击者不回应ACK包,这样的话,服务器不知道(SYN+ACK)是否发送成功,默认情况下会重试5次(tcp_syn_retries).这样的话,对于服务器的内存,带宽都有很大的消耗.攻击者如果处于公网,可以伪造IP的话,对于服务器就很难根据IP来判断攻击者,给防护带来很大的困难. 攻与防 攻击者角度 从攻击者的角度来看,有两个地方可以

[深入浅出WP8.1(Runtime)]网络编程之HttpClient类

12.2 网络编程之HttpClient类 除了可以使用HttpWebRequest类来实现HTTP网络请求之外,我们还可以使用HttpClient类来实现.对于基本的请求操作,HttpClient类提供了一个简单的接口来处理最常见的任务,并为身份验证提供了适用于大多数方案的合理的默认设置.对于较为复杂的 HTTP 操作,更多的功能包括:执行常见操作(DELETE.GET.PUT 和 POST)的方法:获取.设置和删除 Cookie 的功能:支持常见的身份验证设置和模式:异步方法上提供的 HTT

黑马程序员——Java网络编程之UDP传输

网络编程 网络模型 通讯要素:InetAddress(对象):ip地址,网络中设备的标识,不可记忆,可用主机名,本地回环地址:127.0.0.1主机名localhost 端口号 传输协议:UDP,将数据的源及目的封装成数据包中,不需要建立连接,每个数据包的大小限制在64K内,无连接,是不可靠协议,不需要建立连接,速度快.力求速度,不求数据的准确性.比如聊天软件,网络会议. TCP:建立连接,形成传输数据的通道,在连接中进行大数据量传输,通过三次握手完成连接,是可靠协议,必须建立连接效率稍低. S

linux网络编程之TCP/IP基础篇(一)

从今天起,将会接触到网络编程,平台是linux,实现语言C语言,最后将会实现一个简易的miniftp服务器. 主要的内容安排为:linux网络编程之TCP/IP基础篇,SOCKET编程篇,进程间通信篇,线程篇,实战ftp篇. 1.ISO/OSI参考模型:open system interconnection开放系统互联模型是由OSI(international organization for standardization )国际标准化组织定义的网络分层模型,共七层. 各层的具体含义: 物理层