网络编程

网络编程(socket).WinSocket_recvfrom出错,GetLastError()为10054

你。 提交于 2019-12-03 08:17:14
1、在写 我的Qt598(vs2017)x64版本的 shadowsocks程序时遇到的。   QUdpSocket 连接上接收函数后,在 2、 3、 4、 5、资料:  5.1、Windows UDP socket recvfrom返回10054错误的解决办法 - 朝雾之归乡 - 博客园.html( https://www.cnblogs.com/cnpirate/p/4059137.html )  5.2、System Error Codes (9000-11999) (Windows).html( https://technet.microsoft.com/zh-cn/ms681391(v=vs.80) )   WSAECONNRESET   10054 (0x2746)   An existing connection was forcibly closed by the remote host.  5.3、System Error Codes (Windows).html( https://technet.microsoft.com/zh-cn/ms681381(v=vs.80) ) 6、 7、 8、 9、 来源: https://www.cnblogs.com/cppskill/p/11784740.html

go语言网络编程之HTTP服务器初探

↘锁芯ラ 提交于 2019-12-03 07:18:11
v1 1 package main 2 3 import ( 4 "log" 5 "net/http" 6 ) 7 8 func main() { //根路由 9 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { 10 w.Write([]byte("Hello, this is version 1.")) //字符串转换成字节 11 }) 12 http.HandleFunc("/bye", sayBye) 13 14 log.Println("Starting server... v1") //打印一段日志 15 log.Fatal(http.ListenAndServe(":400", nil)) //一般不会被执行 16 } 17 18 func sayBye(w http.ResponseWriter, r *http.Request) { 19 w.Write([]byte("Bye bye this is version 1.")) 20 } 结果 V2 package main import ( "log" "net/http" ) func main() { mux := http.NewServeMux() mux.Handle("/", &myHandler{}) mux

Linux网络编程

心已入冬 提交于 2019-12-03 07:04:21
Linux网络环境 : 僵尸进程、孤儿进程、守护进程、进程组、会话、前台进程组、后台进程组 Linux下进程通信的八种方法 Linux下进程通信的八种方法:管道(pipe),命名管道(FIFO),内存映射(mapped memeory),消息队列(message queue),共享内存(shared memory),信号量(semaphore),信号(signal),套接字(Socket) (1) 管道(pipe):管道允许一个进程和另一个与它有共同祖先的进程之间进行通信; (2) 命名管道(FIFO):类似于管道,但是它可以用于任何两个进程之间的通信,命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建; (3) 信号(signal):信号是比较复杂的通信方式,用于通知接收进程有某种事情发生,除了用于进程间通信外,进程还可以发送信号给进程本身;Linux除了支持UNIX早期信号语义函数signal外,还支持语义符合POSIX.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD即能实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数的功能); (4) 内存映射(mapped memory):内存映射允许任何多个进程间通信

网络编程面试题

早过忘川 提交于 2019-12-03 04:42:16
一、简述OSI七层协议 # 答案: ''' 应用层: HTTP,FTP,NFS 表示层: Telnet,SNMP 会话层: SMTP,DNS 传输层: TCP,UDP 网络层: IP,ICMP,ARP 数据链路层: Ethernet,PPP,PDN,SLIP,FDDI 物理层: IEEE 802.1A, IEEE 802.11 ''' 二、简述TCP三次握手、四次挥手过程 三次握手 1.首先客户端向服务端发送一个带SYN标志,以及随机生成的序号100(0字节)的报文 2.服务端收到报文后返回一个报文(SYN200(0字节)),ACK1001(字节+1)给客户端 3.客户端再次发送带有ACk标志201(字节+)序号的报文给服务端 至此三次握手过程结束,客户端开始向服务端发送数据。 白话版: 1.客户端向服务端发送请求:我想给你通信,你准备好了么? 2.服务端收到请求后回应客户端: I'ok,你准备好了么? 3.客户端礼貌的再次回一下服务端:准备就绪,咱们开始通信吧! 整个过程跟打电话的过程一摸一样:1 喂,你在吗? 2在呢,我说话听得到不, 3 嗯,听得到,接下来请开始你的表演 补充: SYN:请求询问 ACk:回复,回应 四次挥手 由于TCP连接是可以双向通信的(全双工),因此每个方向都必须单独进行关闭(这句话才是精辟,后面四个挥手过程都是其具体实现的语言描述) 四次挥手过程

网络编程socket套接字及其使用(五)

做~自己de王妃 提交于 2019-12-03 04:21:11
今天我们继续就网络编程进行深入的探讨,我们知道TCP/IP协议是面向连接的socket编程,也就是通信是基于连接,必须先建立连接,我们才可以进行通信。具体流程如下: 服务器端流程: 创建套接字(socket) 将套接字绑定到一个本地地址和端口上(bind) 将套接字设为监听模式,准备接受客户请求(listen) 等待客户请求到来:当请求到来后,接受连接请求,返回一个新的对于此次连接的套接字(accept) 用返回的套接字和客户端进行通信(send/recv) 返回等待另一个客户请求。 关闭套接字。 代码如下: 1 #include<Winsock2.h> 2 #include<stdio.h> 3 4 void main() 5 { 6 //load socket libariy 7 WORD wVersionRequested; 8 //this struct use to stored Windows Sockets value after call WSAStartup() function, 9 //include the data from Winscok.dll 10 WSADATA wsaData; 11 int err; 12 wVersionRequested=MAKEWORD(1,1); 13 err = WSAStartup(wVersionRequested

python网络编程 - tcp

北战南征 提交于 2019-12-03 01:57:15
网络编程 低级别的网络服务 高级别的网络服务 socket又称“套接字”,应用程序通过“套接字”向网络 发出请求 或者 应答网络请求 ,使 主机间 或者 一台计算机上的进程间 可以通讯。 socket()函数 使用socket()函数来创建套接字,如下: socket.socket([family[,type[,protocol]]]) family:套接字家族,AF_UNIX或者AF_INET type:套接字类型,面向连接的还是面向非连接的,SOCK_STREAM或者SOCK_DGRAM protocol:一般不填默认为0 python代码实现 服务端 流程 1、socket创建一个套接字 2、bind绑定ip和port 3、listen 使套接字变为可以被动链接(默认创建的套接字是主动去链接别人的) 4、accept 等待客户端的链接(accept和客户端的connect是一对,服务器的accept只响应客户端的connect) 5、send/recv 发送和接收数据(recv和send是一夫多妻,服务器的recv响应客户端的send,也响应客户端socket的close;反之亦然)。有一个好玩的事情,当某一端send空数据的时候,另一端recv并没有响应,而当close的时候,recv却是能响应的,不过数据为空,猜测是send不能发送空数据 代码 import socket

【linux下c语言服务器开发系列5】功能齐全的聊天室 sever [IO复用+多进程+信号处...

*爱你&永不变心* 提交于 2019-12-03 01:03:41
上个博客的最后,说要写一个功能齐全一些服务器,所以,这边博客主要对这个服务器进行一个简单的介绍。这个服务器,是一个聊天室服务器。 当客户端连接到服务器后,就可以收到所有其他客户端发送给服务器的内容。主要实现原理如下: 1.IO复用: 利用epoll函数,对多个套接字进行监听,包括:listenfd,标准输入套接字,与子进程通讯的套接字还有信号处理的套接字。 listenfd:这个套接字主要是服务器端用来监听是否有新的客户端的连接的。一旦有连接,则视为新的客户到来,然后,准备连接,分配用户内存,对应各种信息,连接成功后,fork一个子进程进行对这个连接进行一对一的处理。这里的处理,主要是对各种套接字进行监听,并进行相应的处理,下文的多进程部分会有。 标准输入套接字:为的是在服务器端也能输入一些信息,并让这个服务器根据输入的信息进行反应。不过,我这里的反应主要是让服务器原样输出。 与子进程通讯的套接字:因为没个客户,都是用一个子进程在单独的处理,各个子进程之间的通信,首先需要通过父进程,然后再进行广播,从而实现子进程与其他所有子进程之间的通信。这里,子进程与父进程之间的通信,是靠管道完成的。但是,传统的管道是pipe()函数创建的,只能单工的通信,我这里为了双工的通信,使用的是socketpair()创建的管道,管道的两端都可以进行读写操作。如果子进程有数据写给父进程

【linux下c语言服务器开发系列】 开篇(socket的基本操作)

天涯浪子 提交于 2019-12-03 01:03:31
对于linux下c语言的编程,尤其是网络编程这部分,还是有一些莫名的爱好的。学习了一些东西,如果不加以总结和实际操作,往往容易忘了。所以,在此写个系列的博客,记录一下,从零开始写linux下的服务器编程。希望看到这篇日志的同学,多提意见,共同学习。 对于网络编程,主要是对socket和IO进行操作。为了实现高效通讯,需要一些策略,后面会介绍到。作为开篇,主要是对socket的基础操作的讲解。 socket本质上就是一个int的数字,文件描述符,用于标识主机间端到端的通讯。两端的主机,通过对该socket进行读写,完成双方的通讯。 socket需要新建(socket())、绑定(bind()),监听(listen),接收连接(accept()),以及读写(read() write(),还有别的IO函数)等。绑定,是将已经新建好的socket与本地的地址进行一个联系。地址( struct sockaddr_in )的设定往往根据需要的具体情况,包括协议、端口、IP地址等。监听是告诉客户端,服务器这边已经准备好了,等待为其服务啦。接受连接是在客户端请求连接时,双方建立连接的通道,为通讯做好准备。接下来,就是数据交换(读和写)。关于读写的函数,比较多,read()\write(), recv()\send()、recvfrom\sendto(),recvmsg()\sendmsg()等

网络编程之每天学习一点点[day5]-----aio编程

匿名 (未验证) 提交于 2019-12-03 00:30:01
AIO,在NIO的基础上引入了异步通道的概念,并提供了异步文件和异步套接字通道的实现,从而在真正意义上实现了异步非阻塞,这是在jdk1.7及以后才有的。 AIO不需要通过类似NIO的多路复用器对注册的通道进行轮训操作,即可实现异步读写,从而简化了NIO的编程模型。也可以称为NIO2.0.这种模式才是真正的异步非阻塞模型。 AsynchonousServerSocketChannel AsynchonousSocketChannel 代码: import java . net . InetSocketAddress ; import java . nio . channels . AsynchronousChannelGroup ; import java . nio . channels . AsynchronousServerSocketChannel ; import java . util . concurrent . ExecutorService ; import java . util . concurrent . Executors ; public class Server { //线程池 private ExecutorService executorService ; //线程组 private AsynchronousChannelGroup

iOS中的网络编程基础(一)

匿名 (未验证) 提交于 2019-12-03 00:30:01
客户端 :移动应用(iOS、android等) 服务器 :为客户端提供服务、提供数据、提供资源的机器 请求 :客户端向服务器索取数据的一种行为 响应 :服务器对客户端的请求做出的反应,一般指返回数据给客户端 URL(Uniform Resource Locator) 通过一个URL,能找到互联网唯一的一个资源 URL就是资源地址、位置,互联网上每一个资源都有唯一的URL 格式: 协议://主机地址/路径 (eg:http:www.baidu.com/img/login.png) 协议:不同的协议,代表着不同的资源查找方式、资源传输方式 主机地址:存放资源的主机(服务器)的IP地址(域名) 路径:资源在主机(服务器)中的具体位置 URL中常见的协议 HTTP:超文本传输协议,访问的是远程网络资源,http:// file:访问的是本地计算机上的资源,file:// mailto:访问的是电子邮件地址,mailto: FTP:访问的是共享主机的文件资源,ftp:// 作用: HTTP协议规定了客户端和服务器之间的数据传输格式 让客户端和服务器能有效的进行数据沟通 特点: 简单快速:因为HTTP协议简单,所以HTTP服务器的程序规模小,因为通信速度快 灵活:HTTP允许传输各种各样的数据 HTTP基本通信过程 请求:客户端向服务器发起请求 响应:服务器返回客户端相应数据