socket编程中常用的相关知识点
2009-11-19 17:37
423 查看
socket通讯时常用的几个函数及其相关说明:
1:ssize_t write(int fd, const void *buff, size_t nbytes),相关参数说明省略。该函数失败返回-1,并设置error变量,我们可以根据错误类型来进行相关的处理,如果errno为EINTR时,表示中断错误,此时我们可以继续写入
(另外情况我们就无能为力了)。成功分为两种清苦:完全写入时返回值和nbytes要相等;部分写入时,可以通过 while循环(条件:返回值是否小于nbytes)来实现完全写入
。下面是一个示例:
int my_write(int fd,void *buffer,int length)
{
int bytes_left;
int written_bytes;
char *ptr;
ptr=buffer;
bytes_left=length;
while(bytes_left>0)
{
/* 开始写*/
written_bytes=write(fd,ptr,bytes_left);
if(written_bytes<=0) /* 出错了*/
{
if(errno==EINTR) /* 中断错误 我们继续写*/
written_bytes=0;
else /* 其他错误 没有办法,只好撤退了*/
return(-1);
}
bytes_left-=written_bytes;
ptr+=written_bytes; /* 从剩下的地方继续写 */
}
return(0);
}
2:read函数的原理和用法和write一样,相关示例如下:
int my_read(int fd,void *buffer,int length)
{
int bytes_left;
int bytes_read;
char *ptr;
bytes_left=length;
while(bytes_left>0)
{
bytes_read=read(fd,ptr,bytes_read);
if(bytes_read<0)
{
if(errno==EINTR)
bytes_read=0;
else
return(-1);
}
else if(bytes_read==0)
break;
bytes_left-=bytes_read;
ptr+=bytes_read;
}
return(length-bytes_left);
}
3:send/recv函数实现的功能和write/read一样,参数多一个(一般采用默认值0即可)函数原型如下:
int recv(int sockfd,void *buf,int len,int flags)
int send(int sockfd,void *buf,int len,int flags)
4:setsockopt函数,一般使用该函数来设置sock_fd的相关属性的。如下示例:
setsockopt(sock_fd, SOL_SOCKET, SO_SNDBUF, (const char *)&nSendBuf, sizeof(int))——设置sock_fd发送缓冲区大小的。同理也可以设置接受缓冲区大小。
1:ssize_t write(int fd, const void *buff, size_t nbytes),相关参数说明省略。该函数失败返回-1,并设置error变量,我们可以根据错误类型来进行相关的处理,如果errno为EINTR时,表示中断错误,此时我们可以继续写入
(另外情况我们就无能为力了)。成功分为两种清苦:完全写入时返回值和nbytes要相等;部分写入时,可以通过 while循环(条件:返回值是否小于nbytes)来实现完全写入
。下面是一个示例:
int my_write(int fd,void *buffer,int length)
{
int bytes_left;
int written_bytes;
char *ptr;
ptr=buffer;
bytes_left=length;
while(bytes_left>0)
{
/* 开始写*/
written_bytes=write(fd,ptr,bytes_left);
if(written_bytes<=0) /* 出错了*/
{
if(errno==EINTR) /* 中断错误 我们继续写*/
written_bytes=0;
else /* 其他错误 没有办法,只好撤退了*/
return(-1);
}
bytes_left-=written_bytes;
ptr+=written_bytes; /* 从剩下的地方继续写 */
}
return(0);
}
2:read函数的原理和用法和write一样,相关示例如下:
int my_read(int fd,void *buffer,int length)
{
int bytes_left;
int bytes_read;
char *ptr;
bytes_left=length;
while(bytes_left>0)
{
bytes_read=read(fd,ptr,bytes_read);
if(bytes_read<0)
{
if(errno==EINTR)
bytes_read=0;
else
return(-1);
}
else if(bytes_read==0)
break;
bytes_left-=bytes_read;
ptr+=bytes_read;
}
return(length-bytes_left);
}
3:send/recv函数实现的功能和write/read一样,参数多一个(一般采用默认值0即可)函数原型如下:
int recv(int sockfd,void *buf,int len,int flags)
int send(int sockfd,void *buf,int len,int flags)
4:setsockopt函数,一般使用该函数来设置sock_fd的相关属性的。如下示例:
setsockopt(sock_fd, SOL_SOCKET, SO_SNDBUF, (const char *)&nSendBuf, sizeof(int))——设置sock_fd发送缓冲区大小的。同理也可以设置接受缓冲区大小。
相关文章推荐
- 关于socket编程相关知识点总结
- struct sockaddr_in等Socket编程相关数据类型定义- -
- socket编程头文件和常用函数
- linux网络编程常用函数详解与实例(socket-->bind-->listen-->accept)
- 【Java TCP/IP Socket】Socket编程知识点总结
- linux网络编程常用函数详解与实例(socket-->bind-->listen-->accept)
- C语言中socket相关网络编程函数小结
- 2、MyEclipse和Eclipse调优,MyEclipse配置(tomcat和jdk的内存设置),jar引入相关知识点,将Java项目编程web项目的办法
- Socket编程相关数据类型定义
- socket编程常用函数
- [网络通信]socket编程相关
- 黑马程序员——JAVA基础---网路编程---概述,UDP/TCP对应Socket,小知识点
- [转载]struct sockaddr_in等Socket编程相关数据类型定义
- linux socket 编程 常用函数
- socket 编程常用函数
- unix编程之socket编程系列之 socket常用的函数(一)
- 【引用】Socket网络编程:常用方法
- socket编程常用函数及参数
- Windows编程-1-字符和字符串处理相关知识点总结
- Socket编程相关数据类型定义