recv函数会将套接字缓冲区中的内容读出,但不清空,与read函数的区别在此。此函数有一个flag标志位,设为MSG_PEEK。
send函数会将缓冲区中的内容写入到套接字,也不清空,与write函数的区别在此。
用这两个函数可以先接收或发送缓冲区中的内容,然后再用readn(此时缓冲区中的内容依然存在)与write函数去继续判断换行符/n,对缓冲区内容实现换行输出。
echocli.c...
分类:
其他好文 时间:
2014-05-13 23:43:35
阅读次数:
494
一、在windows进行socket编程注意:必须添加#pragma
comment(lib,"ws2_32.lib"),该库。或者(vs 2010)在:项目>属性->配置属性->链接器->输入
ws2_32.lib:附加依赖项中加入要链接的库即可。ws2_32.lib库对应ws2_32.dll,提...
分类:
其他好文 时间:
2014-05-13 21:42:16
阅读次数:
374
1,首先添加两个windows窗体项目,一个作为服务端server,一个作为客户端Client
2,然后添加服务端代码,添加命名空间,界面上添加TextBox控件 using System.Net; using System.Net.Sockets;
3,FormLoad方法添加代码 ...
分类:
Web程序 时间:
2014-05-13 17:11:09
阅读次数:
388
已经工作了接近一年的时间,工作之余也只能看看书,了解一下相关的技术细节,在网络设备公司不可避免的要和socket打交道,但通常都是调用公司封装好的接口,没有去考虑这些封装背后的工作,回过头来看真的觉得进步很小,我只能逼自己看看书,看看一些好的代码。
sendmsg和recvmsg这两个接口是高级套接口,这两个接口支持一般数据的发送和接收,还支持多缓冲区的报文发送和接收(readv和sendv...
分类:
其他好文 时间:
2014-05-13 13:56:17
阅读次数:
225
前言
学习任何一个稍有难度的技术,要对其有充分理性的分析,之后果断做出决定---->也就是人们常说的“多谋善断";本系列虽然涉及的是socket相关的知识,但学习之前,更想和广大程序员分享的是一种心境微笑:学习是一个循序渐进的过程,心态应该随时调节,保持戒骄戒躁的状态。比如最近在看网易公开课MIT《算法导论》,老师提到,学习算法之前要计算机数学+离散数学+概率论等课程的知识,所以一直学不好算法的程序员不妨从基础入手,这都是中国式教育惹的祸啊!(此处省略一万字......)...
分类:
编程语言 时间:
2014-05-13 13:53:11
阅读次数:
325
简介
TCP协议要经过三次握手才能建立连接:
(from wiki)
于是出现了对于握手过程进行的攻击。攻击者发送大量的FIN包,服务器回应(SYN+ACK)包,但是攻击者不回应ACK包,这样的话,服务器不知道(SYN+ACK)是否发送成功,默认情况下会重试5次(tcp_syn_retries)。这样的话,对于服务器的内存,带宽都有很大的消耗。攻击者如果处于公网,可以伪造IP的话,对...
分类:
其他好文 时间:
2014-05-13 11:21:28
阅读次数:
435
前言
学习任何一个稍有难度的技术,要对其有充分理性的分析,之后果断做出决定---->也就是人们常说的“多谋善断";本系列虽然涉及的是socket相关的知识,但学习之前,更想和广大程序员分享的是一种心境微笑:学习是一个循序渐进的过程,心态应该随时调节,保持戒骄戒躁的状态。比如最近在看网易公开课MIT《算法导论》,老师提到,学习算法之前要计算机数学+离散数学+概率论等课程的知识,所以一直学不好算法的程序员不妨从基础入手,这都是中国式教育惹的祸啊!(此处省略一万字......)...
分类:
编程语言 时间:
2014-05-13 08:52:15
阅读次数:
394
一概念
serversocket实现了服务端的socket,一个服务端的socket等待从网络上发来的请求,并基于这个请求作出
响应的操作,并作出回应结果。
serversocket 建立的是socket的服务端,socket建立的是客户端。最主要构造方法:
public ServerSocket():创建一个未绑定任何端口的套接字
public ServerSocket(in...
分类:
编程语言 时间:
2014-05-13 08:15:18
阅读次数:
321
erlang R17带来了新的socket选项{active,N} ,与{active,once}一起为应用层提供流量控制。为什么会多了这个选项,{active,once}不是可以有效抑制大量socket消息吗?我们知道,{active,once}在每次接收到包都要重新设置active选项,才能继续接收erlang的消息通知。实际上,每次设定{active,once}都意味着调用一次epoll_ctl, 如果请求过于频繁,就会有大量的epoll_ctl调用。erlang目前只有一个线程会收割epoll_wa...
分类:
其他好文 时间:
2014-05-13 08:04:58
阅读次数:
365
1.OpenFileDescriptorsLinux在系统调用,大量的系统调用都依赖于文件描述符,而文件描述符可分配给进程的最大大小由资源限制来定义。因此,如果文件描述符大小不够,或有不正常网络连接(Socket也算)、文件IO没有关闭并释放出文件描述符。也可以说是文件句柄(FileOperator),..
分类:
系统相关 时间:
2014-05-13 02:24:29
阅读次数:
470