网络编程

网络编程

青春壹個敷衍的年華 提交于 2020-01-24 14:52:35
UDP协议 不管接收端是否存在都会执行发生操作,并且接收端不会做出响应,` public class Demo { public static void main ( String [ ] args ) throws IOException { //DatagramSocket封装了upd协议的相关方法 DatagramSocket ds = new DatagramSocket ( ) ; String s = "hello" ; InetAddress ip = InetAddress . getByName ( "127.0.0.1" ) ; //字节数组,长度,长度,ip,端口号 System . out . println ( ip ) ; DatagramPacket dp = new DatagramPacket ( s . getBytes ( ) , 0 , s . getBytes ( ) . length , ip , 8888 ) ; ds . send ( dp ) ; //发送要发的数据 ds . close ( ) ; } } public class Receive { public static void main ( String [ ] args ) throws IOException { //服务器没有指定ip默认本地主机,要指定端口号

0502 网络编程

会有一股神秘感。 提交于 2020-01-23 05:56:14
复习:正则模块 正则表达式 元字符 : . 匹配除了回车以外的所有字符 \w 数字字母下划线 \d 数字 \n \s \t 回车 空格 和 tab ^ 必须出现在一个正则表达式的最开始,匹配开头 $ 必须出现在一个正则表达式的最后,匹配结尾 | 或 a|b 要么取左边的要么取右边的 ()|() 分组中的或 一定是长的在前面 短的在后面 [] 在同一个位置上可能出现的所有字符都放在组里 [^] 在同一个位置上不能出现的所有字符都放在组里 () 对于一整个组做量词约束 ; python 分组优先 量词 : * 0、多次 + 1、多 ? 0、1 {} 具体的 {n},{n,m},{n,} 问好的用法 惰性匹配 : 量词+? 表示使用惰性匹配 分组优先 findall split ;取消分组优先 (?:。。。) 分组命名 (?P<name>...) import re ret=re.findall(r"\d+","1-2*(60+(-40.35/5)-(-4*3))") print(ret) 有的时候 不想要的内容需要被匹配出来 你不想要的东西包含着你想要的东西 ret=re.findall(r"\d+\.\d+|(\d+)","1-2*(60+(-40.35/5)-(-4*3))") ret.remove('') print(ret) 二、网络编程 软件开发的两种架构 应用类:qq、微信

网络编程(一)

不羁岁月 提交于 2020-01-23 05:54:41
一.软件开发架构   1.c/s架构(client/server)       c:客户端       s:服务器   2.b/s架构(browser/server)       b:浏览器       s:服务器 ps:b/s架构的本质也是c/s架构 二.OSI协议 计算机与计算机之间实现远程通信需要有一套公共的标准/协议协议 1.OSI协议   OSI七层协议       应用层       表示层       会话层       传输层       网络层       数据链路层       物理连接层   OSI五层协议       应用层       传输层       网络层       数据链路层       物理连接层 2.物理连接层   基于电信号传输010101001010这种类似的二进制数据 3.数据链路层   1.规定的电信号的分组方式   2.规定了任何一台接入互联网的计算机都必须有一块网卡     每一块网卡上面都刻有世界上独一无二的编号 12位16进制数 前6位是厂商编号 后6位是流水线编号     这12位数叫做mac地址   ps:以上两点合称为"以太网协议"   交换机 基于以太网协议通信 不能跨局域网通信 4.网络层   IP协议   规定了只要是接入互联网的计算机都必须有一个IP地址   ip地址特点: 点分十进制   ip地址最小:0.0

socket网络编程快速上手(一)

回眸只為那壹抹淺笑 提交于 2020-01-23 05:35:18
工作以来,写了很多socket相关的代码。磕磕碰碰,走了很多弯路,也积累了一些东西,今天正好整理一下。为了证明不是从书上抄来的,逻辑会有点乱(借口,呵呵)!知识点的介绍也不会像书上说的那么详细和精准,毕竟个人水平也就这样了。当然,主要还是以上手为主,不过分剖析原理性内容。一些陌生的函数要用到的头文件,使用man查看一下就能解决了。既然该文的名称为“快速上手”,那个人认为下述内容都不存在水分,都是必须要掌握的,一点都不能急躁! 一、socket连接流程: 对于程序员来说,开始的时候只会把socket编程当成一个工具,尽快上手,尽快解决战斗。于是乎最关心的就是socket那些函数的调用顺序,那就先给出UDP/TCP的流程图(从《UNIX网络编程》)吧: 有了流程图,再找一些资料,就很容易写出下面这样的代码(以TCP为例): 服务器程序: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <unistd.h> 5 #include <sys/types.h> 6 #include <sys/socket.h> 7 #include <netinet/in.h> 8 #include <arpa/inet.h> 9 10 #define PORT 1234 11 #define

网络编程与反射

倖福魔咒の 提交于 2020-01-23 05:17:53
一、网络编程 1、UDP url:统一资源定位符 互联网的三大基石:html、http、url 协议:getProtocol() 域名:getHost() 端口:getPort() 得到锚点:getRef() URL url=new URL("https://www.taobao.com"); System.out.println(url); System.out.println("协议"+url.getProtocol()); System.out.println("端口"+url.getPort()); System.out.println("域名"+url.getHost()); System.out.println("查询内容"+url.getQuery()); System.out.println("锚点"+url.getRef()); 2、传输协议 TCP:面向连接,3次握手,安全但开销大,效率低,大小没有限制; UDP:非面向连接,不安全协议简单,开销小,效率高,只管发只管写,大小限制一般不超过60k; 面向Socket编程:传输层为应用层开辟的口子,用来传出数据 UDP对Socket实现: DatagramPacket: 打包|数据报包 DatagramPacket(byte[] buf, int offset, int length, SocketAddress

QT分析之网络编程

≡放荡痞女 提交于 2020-01-23 03:49:54
原文地址:http://blog.163.com/net_worm/blog/static/127702419201002842553382/ 首先对Windows下的网络编程总结一下: 如果是服务器,其WinSDK调用分别为: 1 WSAStartup() -> socket() -> htons() / htonl() -> bind() -> listen() -> accept() -> recv() / send() -> closesocket() -> WSACleanup() 如果是客户端程序,其调用序列为: 1 WSAStartup() -> socket() -> htons() / htonl() -> connect() -> recv() / send() -> closesocket() -> WSACleanup() 前面转贴的客户端(WinSocket温习)程序中,收到信息就在console打印出来然后退出了;在一般的应用中,通常是要一直等待收发消息的,直到程序确认退出才关闭socket。如果用一个轮询就会占用很多的CPU资源,所以很多嵌入式设计中会用一个WaitForMultiObject调用,等待退出命令或者超时,然后退出或进行下一轮信息接受。在Windows平台下也有一些比较高明的设计,使用异步socket,然后用异步选择的办法

网络编程——TCP和UDP编程模型(TCP/UDP服务器和客户端-实现代码)

天大地大妈咪最大 提交于 2020-01-23 00:37:14
网络编程及其编程环境 : 通信连接: 局域网拓扑图: 广域网拓扑图: 编程环境:vim,linux,..... TCP和UDP编程模型 1,传输层TCP和UDP 1)OSI七层模型 2)TCP协议 :传输控制协议,向用户进程提供可靠的全双工字节流 3)UDP协议:用户数据报协议,是一种无连接的协议,不可靠传输 2,TCP编程模型 1)客户端 2)服务器 例子1:socket()实现进程间通信,AF_UNIX (1)服务器端;server.c #include<stdlib.h> #include<stdio.h> #include<unistd.h> #include<sys/types.h> #include<sys/socket.h> #include<sys/un.h> int main() { int serverfd,clientfd; struct sockaddr_un server,client; int client_len=sizeof(client); //initial server.sun_family = AF_UNIX; strcpy(server.sun_path,"mysocketunix"); //socket serverfd=socket(AF_UNIX,SOCK_STREAM,0); if(serverfd ==-1) { printf(

UNIX网络编程--IPV4 IPV6 ICMPV4 ICMPV6

☆樱花仙子☆ 提交于 2020-01-22 16:11:55
一、IPV4首部 IP层提东无连接不可靠的数据报递送服务。它会尽力把IP数据报递送到指定的目的地,然而并不保证他们一定到达,也不保证他们的到达顺序与发送顺序一致,还不保证每个IP数据报只到达一次。任何期望的可靠性(既五差错按顺序不重复地递送用户数据)必须由上层提供支持。对于TCP应用程序而言,这有TCP本身完成,对于UDP应用程序而言,这得由应用程序完成。IP层最重要的功能之一是路由。每个IP数据报包含一个源地址和一个目的地址。 1)4位版本字段值为4. 2)首部长度字段是包括任何选项在内的整个IP首部的32位字长度。这个4位字段的最大取值为15,因而IP首部的最大长度为60个字节。扣除首部拱顶部分所占据的20字节外,它最多允许40个字节的选项。 3)历史性的8位服务类型字段被替换为两个字段:6位区分服务码点和2位显示拥塞通知 4)16位总长度字段是包括IPV4首部在内的整个IP数据报的字节长度。数据报中的数据量就是笨字段减掉4乘以首部长度(首部长度都是32位或4字节的整数倍)本字段是必需的,因为有些数据链路要求把帧垫补成某个最小长度(例如以太网),因而有效IP数据报的大小有可能小于数据链路的最小长度。 5)16位标识字段由IP模块为每个IP数据报设置成不同的值,用于分片和重组。该字段必须就源IPV4地址

Java网络编程必看重点

删除回忆录丶 提交于 2020-01-22 05:36:15
网络编程 URL url: 统一资源定位符 互联网的三大基石: html http url URL 类 : https://www.baidu.com String getPath() 得到这个 URL路径的一部分。 String getHost() 这个 URL的主机名,如果适用的话。 int getPort() 这个 URL的端口号。 String getProtocol() 这个 URL的协议名称。 String getQuery() 获取查询 URL的一部分。 String getRef() 得到了锚(也称为“参考”) URL。 //简单爬虫 public class Demo01 { public static void main(String[] args) throws IOException { URL url=new URL("https://www.taobao.com"); System.out.println(url); System.out.println("协议"+url.getProtocol()); System.out.println("端口"+url.getPort()); System.out.println("域名"+url.getHost()); System.out.println("查询内容"+url.getQuery());