一.首先介绍一下 socketserver 模块中的类: 类 描述 BaseServer 包含服务器的核心功能与混合(mix-in)类的钩子功能.这个类用于派生,不要直接生成这个类的类对象 TCPServer/UDPServer 基本的网络同步TCP\UDP服务器 UnixStreamServer/UnixDatagramServer 基本的基于文件同步TCP\UDP服务器 ForkingTCPServer/ForkingUDPServer  ForkingMixIn 和 TCPServer/U…
好久没写博客了,前段时间忙于做项目,耽误了些时间,今天开始继续写起~ 今天来讲下关于Socket通信的简单应用,关于什么是Socket以及一些网络编程的基础,这里就不提了,只记录最简单易懂实用的东西. 1.首先先来看下基于TCP协议Socket服务端和客户端的通信模型: Socket通信步骤:(简单分为4步) 1.建立服务端ServerSocket和客户端Socket 2.打开连接到Socket的输出输入流 3.按照协议进行读写操作 4.关闭相对应的资源 2.相关联的API: 1.首先先来看下S…
下面将基于TCP协议用JAVA写一个非常简单的聊天室程序, 聊天室具有以下功能, 在服务器端,可以接受客户端注册(用户名),可以显示注册成功的账户 在客户端,可以注册一个账号,并用这个账号发送信息 发送信息有两种模式,一种是群聊,所有在线用户都可以看到消息,另一种是私聊,只针对指定账户发送消息 下面是主要的实现思路, 首先是服务器端, 需要使用多线程实现. 主线程用来循环监听客户端的连接请求, 一旦接收到一个请求,就为这个客户端创建一个专用通信线程. 服务器端依靠一个经过重写的map保存在线的客…
# 客户端 # -*- coding: utf-8 -*- import socketserver import struct import json import subprocess class MyTcpHandler(socketserver.BaseRequestHandler): def handle(self): while True: try: cmd = self.request.recv(1024) if not cmd: break print(cmd.decode('ut…
首先我们需要写连个py文件,一个server,一个client. import socket sk = socket.socket() # sk.bind(('ip',port)) sk.bind(('127.0.0.1',8080)) # 127.0.0.1代表一个ip地址,8080代表一个端口号. sk.listen() conn,addr = sk.accept() # 一般可写成 conn,_ = sk.accept(),因为我们一般只用到conn,而用不到的直接用_代替. while…
本节内容: 1.验证客户端的链接合法性 2.socketserver模块实现并发 一.验证客户端的链接合法性 首先,我们来探讨一下,什么叫验证合法性, 举个例子:有一天,我开了一个socket服务端,只想让咱们这个班的同学使用,但是有一天,隔壁班的同学过来问了一下我开的这个服务端的ip和端口,然后他是不是就可以去连接我了啊,那怎么办,我是不是不想让他连接我啊,我需要验证一下你的身份,这就是验证连接的合法性,再举个例子,就像我们上面说的你的windows系统是不是连接微软的时间服务器来获取时间的啊…
threading 线程 基于tcp协议:请求建立连接,然后开启进程 基于udp协议:直接开启新进程 基于tcp协议 import socketserver # 导入socketserver模块 # socketsever 把并发进程的方法封装 class MyHandler(socketserver.BaseRequestHandler): # 定义一个类,继承父类BaseRequestHandler # 父类里有request和client_address 属性 def handle(sel…
基于TCP的大文件发送 #server服务端 import struct import json import os import socket server = socket.socket() # 默认TCP协议 server.bind(('127.0.0.1',8080)) # 传入IP和端口 server.listen(5) # 限制半连接池的数量 while True: conn,addr = server.accept() # conn是连接,addr是地址,accept就是阻塞,等待…
最近在学习unix网络编程,现在正在学习tcp的通信.其实,只要建立起了tcp通信,操作远端的计算机就不是什么问题了.正向telnet一样,也是基于tcp/IP协议的.所以这个实验,也算是对telnet功能的一种简单的模拟. 但是,值得注意的问题是关机涉及到系统权限,所以要给运行在Server端的程序以足够的权限,这样才可以在接收到Client端的关机请求时,执行关机. 将会模拟如下执行过程: 1. 执行 mytelnet 跟上参数telnet服务器 IP地址 127.0.0.1 2. 输入lo…
基于TCP协议套接字,服务端实现接收客户端的连接并发 服务端 import socket from multiprocessing import Process server=socket.socket() server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) server.bind(('127.0.0.1',8080)) server.listen(5) def talk(conn,client_addr): while True: try: msg=con…