网络编程
XuLujuncsdn
想要的,自己给自己。
展开
-
curses
curses是一个在Linux/Unix下广泛应用的图形函数库.,作用是可以绘制在DOS下的用户界面和漂亮的图形。用法编辑1. 包含头文件:curses.h2. 编译时应加上链接语句-lcurses,如:gcc temp.c -o temp -lcurses3. 重要的函数:函数功能initscr()转载 2017-08-11 18:26:09 · 733 阅读 · 0 评论 -
ping.c
#include #include #include #include #include #include #include #include #include #define PACKET_SIZE 4096#define ERROR 0#define SUCCESS 1// 效验算法转载 2017-06-10 18:58:13 · 309 阅读 · 0 评论 -
关于长连接和短连接
TCP/IP通信程序设计的丰富多样性 刚接触TCP/IP通信设计的人根据范例可以很快编出一个通信程序,据此一些人可能会认为TCP/IP编程很简单。其实不然,TCP/IP编程具有较为丰富的内容。其编程的丰富性主要体现在通信方式和报文格式的多样性上。一。通信方式主要有以下三大类:(一)SERVER/CLIENT方式1.一个Client方连转载 2017-06-09 11:02:57 · 588 阅读 · 0 评论 -
linux下socket编写常用头文件
#include //connect,send,recv,setsockopt等#include #include // sockaddr_in, "man 7 ip" ,htons#include //poll,pollfd#include //inet_addr,inet_aton#include转载 2017-06-04 12:40:34 · 1046 阅读 · 0 评论 -
怎么用短链接做压力测试
如果在client端是千万级别的压力测试,则不断用短链接去连服务器,很短时间内会死掉,因为,每个端口不会马上关闭,会TIME_WAIT30秒,则30秒内6000多个端口会用完,导致client端连接失败。因此,需设置端口的TIME_WAIT为0: linger InternalLinger; InternalLinger.l_onoff=1; Int转载 2017-06-08 10:32:20 · 2137 阅读 · 0 评论 -
Linux网络编程入门
(一)Linux网络编程--网络知识介绍linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户端 在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序。 比如我们使用ftp程序从另外一 个地方获取文件的时转载 2017-06-19 10:33:23 · 436 阅读 · 0 评论 -
Epoll,poll,select详解
先说Select: 1.Socket数量限制:该模式可操作的Socket数由FD_SETSIZE决定,内核默认32*32=1024. 2.操作限制:通过遍历FD_SETSIZE个Socket来完成调度,不管哪个Socket是活跃的,都遍历一遍. 后说Poll: 1.Socket数量几乎无限制:该模式下的Socket对应的fd列表由一个数组来保存,大小不限(默认4k). 2.转载 2017-06-03 12:46:09 · 456 阅读 · 0 评论 -
sockaddr_in sockaddr in_addr区别联系[转]
struct sockaddr {unsigned short sa_family; // address family, AF_xxxchar sa_data[14]; // 14 bytes of protocol address};struct sockaddr_in {short int sin_family; // Address familyunsigned转载 2017-06-07 15:17:42 · 342 阅读 · 0 评论 -
常用的socket例子
常用的socket例子关闭连接shutdown(m_sock,SHUT_RDWR) //成功返回0,错误-1设置超时 struct timeval tv; tv.tv_sec=ms/1000; tv.tv_usec=(ms%1000)*1000; setsockopt(s,1,SO_SNDTIMEO,&tv,sizeof(t转载 2017-06-06 20:34:27 · 867 阅读 · 0 评论 -
linux socket 编程中主要函数解析
1. socket()2. bind()3. connect()4. listen()5. accept()6. send()和recv()7. sendto()和recvfrom()8. close()和shutdown()9. getpeername()10. gethostname()socket()--------------------转载 2017-06-11 09:49:24 · 331 阅读 · 0 评论 -
gethostbyname() -- 用域名或主机名获取IP地
#include #include struct hostent *gethostbyname(const char *name); 这个函数的传入值是域名或者主机名,例如"www.google.cn"等等。传出值,是一个hostent的结构。如果函数调用失败,将返回NULL。 struct hostent { cha转载 2017-06-13 19:43:55 · 541 阅读 · 0 评论 -
密码不回显函数(二)
值得注意的是前面两个函数都是从键盘读入数据! 还有getchar是很值得研究的:getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了。 而getch()和getche()是conio.h中的库函数,它的作用是从键盘接收字符。getchar带有显示。 与前面两个函数的区别在于:转载 2017-05-03 13:39:11 · 796 阅读 · 0 评论 -
LINUX聊天室50问
==================================== LINUX聊天室50问====================================1.问题:怎么实现多个终端?监听?2.一个聊天室程序,到底会分解成哪一些步骤呢?3.开启一个 Socket,绑定到另一个端口,并且一直监听此端口。4.服务器是得有很多个SOCK转载 2017-05-06 08:48:01 · 503 阅读 · 0 评论 -
SSL握手过程
一、SSL握手有三个目的:1. 客户端与服务器需要就一组用于保护数据的算法达成一致;2. 它们需要确立一组由那些算法所使用的加密密钥;3. 握手还可以选择对客户端进行认证。二、SSL握手过程:1. 客户端将它所支持的算法列表和一个用作产生密钥的随机数发送给服务器;2. 服务器从算法列表中选择一种加密算法,并将它和一份包含服务器公用密钥的证书发送给客户端;该证书还包含转载 2017-05-07 13:09:48 · 3290 阅读 · 0 评论 -
Linux Socket网络编程(理论分析+充足的示例)
什么是SocketSocket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的 Socket数据传输转载 2017-05-08 15:31:23 · 334 阅读 · 0 评论 -
完成端口与高性能服务器程序开发
此文转自XFOCUS,看了发现这种多线程操作,我了解的太浅了,应该补,准备把此文作者最后列出的这两本书学西下:《windows核心编程》&《windows网络编程》Email:kruglinski_at_gmail_dot_comBlog:kruglinski.blogchina.com早在两年前我就已经能很熟练的运用完成端口这种技术了,只是一直没有机会将它用在什么项目中,这段时间转载 2017-06-15 19:36:55 · 298 阅读 · 0 评论 -
signal(SIGPIPE, SIG_IGN)
http://www.360doc.com/content/11/0604/09/4363353_121584610.shtml我写了一个服务器程序,在Linux下测试,然后用C++写了客户端用千万级别数量的短链接进行压力测试. 但是服务器总是莫名退出,没有core文件.最后问题确定为, 对一个对端已经关闭的socket调用两次write, 第二次将会生成SIGPIPE信转载 2017-06-14 16:34:51 · 337 阅读 · 0 评论 -
基于TCP协议简易聊天室(服务器端)
服务器端:/*********************************************************- File name :chat.c* ******************************************************/ #include "../../include/net.h" int sayt原创 2017-07-15 09:42:12 · 949 阅读 · 0 评论 -
基于TCP协议简易聊天室(客户端)
客户端:/*********************************************************- File name :chat.c* ******************************************************/ #include "../../include/net.h" int s原创 2017-07-15 09:41:21 · 820 阅读 · 0 评论 -
socket通信之http-server
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #incl转载 2017-05-22 12:36:26 · 358 阅读 · 0 评论 -
Linux/Unix IO 多路复用之poll网络编程
前言本章节是用基本的Linux/Unix基本函数加上poll调用编写一个完整的服务器和客户端例子,可在Linux(ubuntu)和Unix(freebsd)上运行,客户端和服务端的功能如下:客户端从标准输入读入一行,发送到服务端服务端从网络读取一行,然后输出到客户端客户端收到服务端的响应,输出这一行到标准输出 服务端代码如下:#inc转载 2017-06-01 18:18:43 · 399 阅读 · 0 评论 -
TCP/IP协议——TCP/IP协议栈及框架
1 基于4层的TCP/IP协议栈基本描述基于4层的TCP/IP协议栈最具说服力的是:这一观点是由TCP/IP原始标准的创立者——美国国防部提出的,它与ISO/OSI参考模型的对应关系如下图:图1 TCP/IP协议栈层次结构与ISO/OSI参考模型的对应关系如图1所示,TCP/IP协议栈从低层开始,依次为网络存取层、网络互连层、传输层和应用层,具体描述如下:转载 2017-05-21 10:28:48 · 927 阅读 · 0 评论 -
linux下客户端检测服务器的 heartbeat
对于heartbeat检测,常用的是在通迅协议上面做,比如pgpool,一台机器会定时向另一台新建一个联接,写和读一些特定字符,之后关闭这个检测用的连接,能连上表明对方没有挂机 对于通过TCP/IP本身这样做,网上win平台下面的例子比较多,相对Linux,MS确实增加了一些特定的函数来检测状态,LINUX下面就没有特定的函数这样做了 下面这部分代码就是通过TCP/转载 2017-05-16 11:03:47 · 440 阅读 · 0 评论 -
Linux下Socket写http协议下载文件代码以及说明
项目一部分需要使用socket写http协议,并下载文件,看似简单得问题,调试起来确有一些小小得问题,如果是windows平台的话,自然会简单很多,一个DownloadFile API就可以搞定,可是客户得Proj是在Linux下,不得已,从头开发了。目前得代码由于依然在win下面调试,所以移植得时候稍微注意一下就可以了。看代码:#include #include #inc转载 2017-05-25 16:00:44 · 544 阅读 · 0 评论 -
UNIX Domain Socket IPC (Linux C编程一站式学习)
UNIX Domain Socket IPCsocket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket。虽然网络socket也可用于同一台主机的进程间通讯(通过loopback地址127.0.0.1),但是UNIX Domain Socket用于IPC更有效率:不需要经过网络协议栈,不需要打包拆包、计算校验和、维护转载 2017-05-15 10:10:13 · 374 阅读 · 0 评论 -
warning: pointer targets in passing argument 3 of ‘accept’ differ in signedness
The first warning tells you you have the wrong type for parameter 3 of accept. It wants a 'socklen_t *', but you are giving it an 'int *'. Declare client_length to be the right type.[cpp] view转载 2017-05-14 12:17:19 · 2231 阅读 · 0 评论 -
Linux下Socket编程中用send发送结构体
Socket中的send函数可以发送字符串,但不能直接发送结构体,因此在发送端先把结构体转成字符串,然后用send发送,在接收端recv字符串,再转换成原先的结构体,这个就是解决问题的主要思路,实现中要注意的问题在下文阐述。 为了客户端之间能够互相通信,实现私聊,我采用服务器转发的方式,因此用户发送的每条消息中除了消息主体外,还必须包含有发送者、接收者ID等信息,如此采用结构体便是最佳的转载 2017-05-13 11:02:34 · 839 阅读 · 0 评论 -
网络超时select和setsockopt的区别和问答
更详细资料:http://hi.baidu.com/vc_net/item/095fea515d32b3dcd58bac57setsockopt与select区别:setsockopt是通过信号来处理的, 超时的时候,read/write返回-1, 而且精度是毫秒级,同时只能一个句柄阻塞.select可以设置更高的精度(微秒), 同时可以处理多个句柄的阻塞.转载 2017-05-24 12:03:12 · 1237 阅读 · 0 评论 -
Linux下Socket相关头文件总结
一 三种类型的套接字:1.流式套接字(SOCKET_STREAM) 提供面向连接的可靠的数据传输服务。数据被看作是字节流,无长度限制。例如FTP协议就采用这种。2.数据报式套接字(SOCKET_DGRAM) 提供无连接的数据传输服务,不保证可靠性。3.原始式套接字(SOCKET_RAW) 该接口允许对较低层次协议,如IP,ICMP直接访问。二 基本转载 2017-05-12 12:36:26 · 557 阅读 · 0 评论 -
unix域socket通信实例
socket服务器端:server.c [html] view plain copy print?//socket读写默认的是非阻塞的 [html] view plain copy print?pre class="cpp" name="code">#include stdi转载 2017-05-23 12:24:46 · 896 阅读 · 1 评论 -
unix网络编程 学习笔记(精华)
1.1 客户端程序和服务端程序 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 网络程序是先有服务器程序启动,等待客户端的程序运行并建立连接.一般的来说是服务端的程序 在一个端口上监听,直到有一个客户端的程序发来了请求. 1.2 常用的命令 由于网络程序是有两个部分组成,所以在调试的时候比较麻烦,为此我们有必要知道一些常用的网络命令转载 2017-05-26 15:33:10 · 7169 阅读 · 0 评论 -
使用UNIX域函数进行套接字编程
《Linux网络编程》第11章高级套接字,本章介绍高级套接字的编程,包含UNIX域的函数、广播、多播、数据链路层的程序设计等在Linux网络程序设计中比较常用的方法。本节为大家介绍使用UNIX域函数进行套接字编程。AD:11.1.3 使用UNIX域函数进行套接字编程使用UNIX域函数进行套接字编程与AF_INET的方式一致,不同的地转载 2017-05-17 10:40:41 · 409 阅读 · 0 评论 -
Windows Socket五种I/O模型——代码全攻略
果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的。Windows操作系统提供了选择(Select)、异步选择 (WSAAsyncSelect)、事件选择(WSAEventSelect)、重叠I/O(Overlapped I/O)和完成端口(Completion Port)共五种I/O模型。每一种模型均适用于一种特定的应用场景。程序员应该对自己的应用需求非常明确,而且综合考虑转载 2017-06-16 11:59:31 · 345 阅读 · 0 评论 -
提高 Linux 上 socket 性能
加速网络应用程序的 4 种方法M. Tim Jones ,资深软件工程师,Emulex2006 年 2 月 13 日使用 SocketsAPI,我们可以开发客户机和服务器应用程序,它们可以在本地网络上进行通信,也可以通过 Internet 在全球范围内进行通信。与其他 API一样,您可以通过一些方法使用 Sockets API,从而提高 Socket 的性能,或者限制转载 2017-05-20 12:40:41 · 996 阅读 · 0 评论 -
send,recv,sendto,recvfrom
send函数int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该函数的第一个参数指定发送端套接字描述符转载 2017-05-19 11:29:56 · 277 阅读 · 0 评论 -
Unix domain socket 的一些小结
http://blog.csdn.NET/wlh_flame/article/details/6358795#By fireworks2@foxmail.com找了大半天的资料,收获也不多,其实还是自己思考更靠谱一些。1. unix域的数据报服务是否可靠 man unix 手册即可看到,unix domain转载 2017-05-10 12:18:00 · 968 阅读 · 0 评论 -
LINUX C网络编程中的心跳机制
在TCP网络通信中,经常会出现客户端和服务器之间的非正常断开,需要实时检测查询链接状态。常用的解决方法就是在程序中加入心跳机制。从网络上找到,主要有以下方法实现TCP异常断开的检测:SO_KEEPALIVE,SIO_KEEPALIVE_VALS和Heart-Beat线程。(1)SO_KEEPALIVE 机制 这是socket库提供的功能,设置接口是setsock转载 2017-05-18 11:36:25 · 1332 阅读 · 0 评论 -
socket编程---服务器端与客户端简单通信
服务器端:[cpp] view plain copy print?/* * File: main.cpp * Author: xiaomo * * Created on 2011年6月22日, 下午8:07 */ #include #include #include #include转载 2017-05-28 11:17:26 · 452 阅读 · 0 评论 -
python 应用 IPy 计算IP/掩码的网络地址
python 应用 IPy 计算IP/掩码的网络地址from IPy import IPdef ipnetwork(ip, mask): return IP(ip).make_net(mask)def issamenetwork(ip1, mask1, ip2, mask2): return ipnetwork(ip1, mask1) =转载 2017-05-09 12:38:05 · 1738 阅读 · 0 评论 -
socket通信---并发服务器图解和阻塞通信图解
当服务器处理一个客户请求可能需要相当长一段时间的时候,使用迭代服务器模式(即整个服务器可能被耽搁客户长期占用)是会影响系统性能的。而处理并发连接的服务器可以称为并发服务器。 并发服务器的一个简单操作是fork一个子进程来服务多个客户。当一个连接建立时,用于阻塞进程的aceept返回,服务器接着调用fork来创建一个子进程,该子进程通过已连接套接口connfd服务客户;而父进程就可以通过转载 2017-05-27 20:19:56 · 419 阅读 · 0 评论