SOCKET编程
文章平均质量分 93
HULIHONG
性格开朗,喜欢学习、游戏。
展开
-
linux socket编程基于本地unix域格式的协议族
头文件:#include #include #include #include #include #include #include #include #include #include #include 服务器端代码:int main(int argc, char **argv){ struct sockaddr_un addr原创 2010-05-11 10:16:00 · 1545 阅读 · 0 评论 -
深入理解send/recv系统调用!
int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该函数的第一个参数指定发送端套接字描述符;第二个参数指明一个存放应用程序要发送数据的缓冲区;第三个参数指明实际要发送的数据的字节数;第四个参数一般置原创 2011-05-16 21:25:00 · 7127 阅读 · 0 评论 -
linux Socket数据发送中信号SIGPIPE及相关errno的研究
socket send 错误(2008-07-05 15:50:53)转载标签:socketsendit Socket数据发送中信号SIGPIPE及相关errno的研究好久没做过C开发了,最近重操旧业。听说另外一个项目组socket开发遇到问题,发送端和接受端数据大小不一致。建议他们采用writen的重发机制,以避免信号中断错误。采用后还是有问题。PM让我帮忙研究下。UNP n年以前看过,很久没做过底层开发,手边也没有UNPvol1这本书,所以做了个测试程序,研究下实转载 2011-04-25 20:32:00 · 2669 阅读 · 0 评论 -
关于SIGPIPE导致进程终止的问题
当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。 根据信号的默认处理规则SIGPIPE信号的默认执行动作是terminate(终止、退出),所以client会退出。若不想客户端退出可以把SIGPIPE设为SIG_IGN 如: signal(SIGPIPE,SIG_IGN); 这时SIGPI转载 2011-04-26 08:41:00 · 1812 阅读 · 0 评论 -
socket编程时 send: Bad file descriptor
reason: It could be that you are closing the client socket before the threadgets a chance to run, or it could be that your thread is improperlysetup.原创 2011-05-08 13:57:00 · 16713 阅读 · 0 评论 -
socket编程 通讯协议tcp,数据承载协议http
sprintf(post, "POST /PURegister HTTP/1.1/r/n"); sprintf(accept, "Accept:*/*/r/n"); sprintf(accept_language, "Accept-Language: zh-cn/r/n"); sprintf(seq, "Seq:%d/r/n", 1);原创 2011-04-11 19:37:00 · 2308 阅读 · 0 评论 -
Linux下send函数 Broken pipe错误的解决方法
在linux下写socket的程序的时候,如果尝试send到一个disconnected socket上,就会让底层抛出一个SIGPIPE信号。client端通过 pipe 发送信息到server端后,就关闭client端, 这时server端,返回信息给 client 端时就产生Broken pipe 信号了。 对于产生信号,我们可以在产生信号前利用方法 signal(int signum, sighandler_t handler)设置信号的处理。如果没有调用此方法,系统就会调用默认处理方法:中止程转载 2011-04-25 18:24:00 · 15321 阅读 · 0 评论 -
select函数详解及实例分析
Select函数在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、 accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻转载 2014-05-19 10:40:13 · 769 阅读 · 0 评论