网络编程

网络编程- socket_server_登录demo

匿名 (未验证) 提交于 2019-12-02 23:32:01
userinfo文件 alex|aee949757a2e698417463d47acac93df server_login import jsonimport hashlibimport socketserverdef md5_pwd(user,pwd): md5_obj = hashlib.md5(user.encode('utf-8')) md5_obj.update(pwd.encode('utf-8')) ret = md5_obj.hexdigest() return retdef login(userinfo): user_dic = json.loads(userinfo) passwd = md5_pwd(user_dic['username'], user_dic['passwd']) with open('userinfo') as f: for line in f: user, pwd = line.split('|') if user_dic['username'] == user and passwd == pwd: print('登录成功') breakclass MyServer(socketserver.BaseRequestHandler): def handle(self): userinfo = self.request.recv(1024)

网络编程- 黏包现象(五)

匿名 (未验证) 提交于 2019-12-02 23:26:52
一、黏包现象(大文件一般用TCP,UDP虽不黏包但不可靠、不宜发送大文件) 二、1、 server端 #_*_coding:utf-8_*_from socket import *ip_port=('127.0.0.1',8080)tcp_socket_server=socket()tcp_socket_server.bind(ip_port)tcp_socket_server.listen(5)conn,addr=tcp_socket_server.accept()data1=conn.recv(2)data2=conn.recv(10) #不知道客户端发送的数据长度 print('----->',data1.decode('utf-8'))print('----->',data2.decode('utf-8'))import timetime.sleep(1)data2=conn.recv(10)print('----->',data2.decode('utf-8'))conn.close()tcp_socket_server.close()client端 #_*_coding:utf-8_*_import timeimport socketBUFSIZE=1024ip_port=('127.0.0.1',8080)s=socket.socket(socket.AF_INET

某课最新《Socket网络编程进阶与实战》

匿名 (未验证) 提交于 2019-12-02 23:03:14
#!/usr/local/bin/thrift --gen cpp namespace cpp Test namespace java com.thrift.test service NucInfoExchange { } git clone https://github.com/apache/thrift.git cd thrift ./bootstrap.sh ./configure make sudo make install // This autogenerated skeleton file illustrates how to build a server. // You should copy it to another filename to avoid overwriting it. #include "NucInfoExchange.h" #include <thrift/concurrency/PlatformThreadFactory.h> #include <thrift/transport/TSocket.h> #include <thrift/transport/TTransportUtils.h> #include <thrift/TToString.h> #include <thrift/stdcxx.h> #include <thrift

Python网络编程利用Socket实现多请求

匿名 (未验证) 提交于 2019-12-02 22:54:36
在阅读这篇文章之前,默认您已经学会了Python基本知识,废话不多说,自己写了一个小程序,直接上原理图和代码,希望各位网友多多指正。 1:目的 利用socket编写客户端和服务器代码,实现多个客户端能够正常访问服务器,能够处理信息和访问Html静态网页 1:基础知识 1970 Socket UNIX TCP/IP 。 API TCP/IP 就是 2:基础调用 Socket Socket IP listen() UDP UDP 3:Socket编程原理 4: 服务器程序和客户端程序 #coding=utf-8 from multiprocessing import Process #导入Python自带库的Process模块 import SimpleHTTPServer #导入Http请求模块 import SocketServer #导入SockrtServer,该模块封装了Socketde 部分功能 from socket import * #导入Sockret中的所有内容 from threading import Thread #导入线程 (4)处理HTTP请求模块 HOST = ("192.168.50.92") #服务器地址 PORT = 7782 #端口号 处理HTTP请求模块 def handleHttp(): #定义函数处理HTTP请求模块 Handler =

Python网络编程攻略(2-2)

匿名 (未验证) 提交于 2019-12-02 22:51:30
用select.select编写一个聊天服务器 代码如下: #coding: utf-8 import select import socket import sys import signal import cPickle import struct import argparse SERVER_HOST = 'localhost' CHAT_SERVER_NAME = 'server' # Some utilities '''send函数定义通过cPicle.dumps()将需要发送的数据序列化, receive函数即是send反向过程,先接收到打包后的长度,将其解包,然后再主机序列化, def send(channel, *args): def receive(channel): '''聊天室服务器需要能做到: 1,记录连接数 2,记录连接的客户端地址以及名称映射 ,需要时返回名称地址 3,重用地址 4,检测键盘中断 5,处理输入及请求 先实现1,2,3,4点:''' class ChatServer(object): ''' 实现客户端类。主要处理输入与从server端返回消息的读取 ''' class ChatClient(object): if __name__ == "__main__": 而后再开几个客户端,注意需要新开终端运行 python uchat.py -

python高级编程――网络编程(一)

匿名 (未验证) 提交于 2019-12-02 22:51:30
计算机网络基础      概念: 计算机网络就是把各个计算机连接到一起,让网络中的计算机可以互相通信。网络编程就是如何在程序中实现两台计算机的通信。而网络编程就是开发计算机网络应用程序 计算机的通信协议    概念: 计算机处理最多的东西就是数据,通信的话就是要传输数据,在传输数据的过程中需要遵循计算机通信协议(TCP/IP) 端口 分类: 物理端口:交换机、路由器、集线器的端口 逻辑端口: TCP/IP协议端口,端口号的范围从0到65535 保留端口:HTTP 80,FTP 20/21,Telnet 23,SMTP 25,DNS 53,MYSQL 3306 动态端口:范围是从1024到65535 动态分配:当系统进程需要使用网络通信时,向主机申请一个端口,主机从可用的端口中分配 一个供它使用,当进程关闭时,同时释放所占用的端口 查看端口状态:netstat -an IP地址 IP地址用来在网络中标记一台电脑的一串数字,比如192.168.1.1;在本地局 域网上是惟一的。 IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4 个字节) IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是 0~255之间的十进制整数。 socket套接字 socket简介   本地的进程间通信(IPC)有很多种方式     管道、消息队列

网络编程-python实现-socket(1.1.1)

匿名 (未验证) 提交于 2019-12-02 22:51:30
Ŀ¼ @(网络编程) 利用 ip地址 协议 端口 标识网络的进程,网络中的进程通信就可以利用这个标志与其他进程进行交互 socket简称套接字 能实现不同主机之间的进程通信 在python中使用socke模块的函数socket就可以实现 import socket s = socket.socket(AddressFamily,Type) 说明 AddressFamily:(AF_INET,AFUNIX)前者为internet进程间通信,后者为同一台机器进程通信,通常使用前者 Type:套接字类型,SOCK_STREAM为TCP协议,SOCK_DGRAM为UDP协议 创建一个TCP套接字 import socket #创建tcp的套接字 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # ... 这里是使用套接字的功能,省略 ... #不用的时候关闭套接字 s.close() 创建一个UDP套接字 import socket #创建tcp的套接字 s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # ... 这里是使用套接字的功能,省略 ... #不用的时候关闭套接字 s.close() 说明 套接字使用的流程与文件使用的流程很类似 创建套接字 使用套接字收发数据

python之网络编程-多线程

匿名 (未验证) 提交于 2019-12-02 22:51:30
线程的理论知识 什么是线程 当开启一个进程的时候:内存中开辟空间,加载资源与数据,调用CPU执行,可能还会使用这个空间的资源。 定义:每个进程都有一个地址空间,而且默认就有一个控制线程。进程只是把资源集中到一起(进程可以认为是一个含有代码的空间),而线程才是CPU的执行单位。 多线程:在一个进程中存在多个控制线程,多个控制线程共享该进程的地址空间。 线程vs进程 开启多进程开销大,开启线程开销非常小 开启多进程的速度慢,开启多线程速度快 进程之间数据不能直接共享(通过队列可以),同一个进程下的线程之间的数据可以共享。 总结:进程:划分空间,加载资源,静态的;线程:执行代码,执行能力,动态的 多线程的应用场景 并发:一个CPU来回切换(线程间的切换) 多进程并发:开启多个进程,每个进程里面的主进程执行任务 多线程并发:开启1个(或多个)进程,每个进程里面多个线程执行任务 当一个程序中包含三个不同的任务时,就可以使用多线程,由于每个线程之间可以直接共享数据。 开启线程的两种方式 与开启多进程相似,只是引用模块为threading。 方式一: from threading import Thread def task(): print('打印子线程') if __name__ == '__main__': t = Thread(target=task) t.start() print(

python网络编程

匿名 (未验证) 提交于 2019-12-02 22:51:30
Python中提供了两个级别访问的网络服务: 1、低级别的网络服务Socket 2、高级别的网络服务模块SocketServer Socket和SocketServer区别: 整个计算机网络是由协议构成,如Web中的http协议、传输协议TCP和UDP等等,通信需要socket来实现。socket直接和传输层后下面的底层网络协议打交道(socket本身让我们直接与TCP打交道),底层socket已经建立好则可以互相通信。互联网现在主流的网络层协议是IPv4,IPv6是下一代网络层协议但不主流,IPv6解决的是IPv4地址耗尽的问题,其实为了应对IPv4资源少的问题产生了局域网和网关。 SocketServer简化了编写网络服务程序的任务,同时SocketServer模块也是Python标准库中很多服务器框架的基础,总的来时,SocketServer是一个种更集成的开发网络开发框架,开发人员可以专注于事务的细节,而不是使用Socket的各种细节。不过学习还是得一步一步来。 网络原理: 网络原理是掌握socket原理的必经之路,首先来介绍一下网络的七层基本框架,包含应用层、会话层、表示层、传输层、网络层、链路层和物理层(当前把网络七层模型中的会话、表示、应用层统称为应用层。) 传输层      通过端对端的接口 TCP UDP 网络层      为数据包选择路由 IP ICMP 物理层

网络编程之udp_socket

匿名 (未验证) 提交于 2019-12-02 22:51:30
# socket基本的步骤import socketclass SC(object): def f(self): udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) udp_socket.sendto(b'hahahaha', ('192.168.7.11', 8080)) udp_socket.close()if __name__ == '__main__': sc = SC() sc.f() 文章来源: 网络编程之udp_socket