linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > Linux开发区 > 软件开发 >
栏目导栏
资料搜索
热门文章
·Linux 下 C 语言编程
·Linux下的通用线程池创建
·C++字符串转换篇
·linux C 进程操作篇
·linux上的C/C++编译器gcc/egcs
·linux C 文件权限控制篇
·GCC使用手册
·linux C 接口处理篇
·在Redhat Linux上安装 GCC 编译
·GCC使用指南
·C语言运算符
·Linux下C开发环境的构成和安装
·fopen()函数的参数说明
·GCC使用手册与常用命令
·Scheme 语言介绍
最新文章
·在Ubuntu Linux 8.04上构建GCC
·Linux操作系统下Socket编程地址
·将VC程序移植到Linux系统的几点
·Linux下malloc/free与new/dele
·Linux下用GTK和socket实现简单
·Linux操作系统下让Tomcat启动在
·Linux操作系统中如何编译C程序
·几种常被人们忽略的Linux系统下
·Eclipse编程工具 在Ubuntu下的
·Linux操作系统下的网络地址转换
·老手经验谈:Linux驱动程序开发
·Linux操作系统多线程同步Mutex
·Linux操作系统下C程序语言简易
·Linux系统平台下关于GCC编译及
·解决Linux系统下管道被接受方关
Google
 
linux C 接口处理篇
[ 作者:Linux联盟收集  加入时间:2006-06-24 14:13:30  来自:Linux联盟收集 ]
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
瑂ocketMyPLinux联盟
表头文件
#include<sys/types.h>MyPLinux联盟
#include<sys/socket.h>MyPLinux联盟
定义函数
int send(int s,const void * msg,int len,unsigned int falgs);MyPLinux联盟
函数说明
send()用来将数据由指定的socket 传给对方主机。参数s为已建立好连接的socket。参数msg指向欲连线的数据内容,参数len则为数据长度。参数flags一般设0,其他数值定义如下MyPLinux联盟
MSG_OOB 传送的数据以out-of-band 送出。MyPLinux联盟
MSG_DONTROUTE 取消路由表查询MyPLinux联盟
MSG_DONTWAIT 设置为不可阻断运作MyPLinux联盟
MSG_NOSIGNAL 此动作不愿被SIGPIPE 信号中断。MyPLinux联盟
返回值
成功则返回实际传送出去的字符数,失败返回-1。错误原因存于errnoMyPLinux联盟
错误代码
EBADF 参数s 非合法的socket处理代码。MyPLinux联盟
EFAULT 参数中有一指针指向无法存取的内存空间MyPLinux联盟
ENOTSOCK 参数s为一文件描述词,非socket。MyPLinux联盟
EINTR 被信号所中断。MyPLinux联盟
EAGAIN 此操作会令进程阻断,但参数s的socket为不可阻断。MyPLinux联盟
ENOBUFS 系统的缓冲内存不足MyPLinux联盟
ENOMEM 核心内存不足MyPLinux联盟
EINVAL 传给系统调用的参数不正确。MyPLinux联盟
范例
参考connect()MyPLinux联盟
 
MyPLinux联盟
MyPLinux联盟
MyPLinux联盟
sendmsg(经socket传送数据)
相关函数
send,sendto,recv,recvfrom,recvmsg,socketMyPLinux联盟
表头文件
#include<sys/types.h>MyPLinux联盟
#include<sys/socket.h>MyPLinux联盟
定义函数
int sendmsg(int s,const strcut msghdr *msg,unsigned int flags);MyPLinux联盟
函数说明
sendmsg()用来将数据由指定的socket传给对方主机。参数s为已建立好连线的socket,如果利用UDP协议则不需经过连线操作。参数msg 指向欲连线的数据结构内容,参数flags一般默认为0,详细描述请参考send()。MyPLinux联盟
结构msghdr定义如下MyPLinux联盟
struct msghdrMyPLinux联盟
{MyPLinux联盟
void *msg_name; /*Address to send to /receive from . */MyPLinux联盟
socklen_t msg_namelen; /* Length of addres data */MyPLinux联盟
strcut iovec * msg_iov; /* Vector of data to send/receive into */MyPLinux联盟
size_t msg_iovlen; /* Number of elements in the vector */MyPLinux联盟
void * msg_control; /* Ancillary dat */MyPLinux联盟
size_t msg_controllen; /* Ancillary data buffer length */MyPLinux联盟
int msg_flags; /* Flags on received message */MyPLinux联盟
};MyPLinux联盟
返回值
成功则返回实际传送出去的字符数,失败返回-1,错误原因存于errnoMyPLinux联盟
错误代码
EBADF 参数s 非合法的socket处理代码。MyPLinux联盟
EFAULT 参数中有一指针指向无法存取的内存空间MyPLinux联盟
ENOTSOCK 参数s为一文件描述词,非socket。MyPLinux联盟
EINTR 被信号所中断。MyPLinux联盟
EAGAIN 此操作会令进程阻断,但参数s的socket为不可阻断。MyPLinux联盟
ENOBUFS 系统的缓冲内存不足MyPLinux联盟
ENOMEM 核心内存不足MyPLinux联盟
EINVAL 传给系统调用的参数不正确。MyPLinux联盟
范例
参考sendto()。MyPLinux联盟
 
MyPLinux联盟
MyPLinux联盟
MyPLinux联盟
sendto(经socket传送数据)
相关函数
send , sendmsg,recv , recvfrom , socketMyPLinux联盟
表头文件
#include < sys/types.h >MyPLinux联盟
#include < sys/socket.h >MyPLinux联盟
定义函数
int sendto ( int s , const void * msg, int len, unsigned int flags, const MyPLinux联盟
struct sockaddr * to , int tolen ) ;MyPLinux联盟
函数说明
sendto() 用来将数据由指定的socket传给对方主机。参数s为已建好连线的socket,如果利用UDP协议则不需经过连线操作。参数msg指向欲连线的数据内容,参数flags 一般设0,详细描述请参考send()。参数to用来指定欲传送的网络地址,结构sockaddr请参考bind()。参数tolen为sockaddr的结果长度。MyPLinux联盟
返回值
成功则返回实际传送出去的字符数,失败返回-1,错误原因存于errno 中。MyPLinux联盟
错误代码
EBADF 参数s非法的socket处理代码。MyPLinux联盟
EFAULT 参数中有一指针指向无法存取的内存空间。MyPLinux联盟
WNOTSOCK canshu s为一文件描述词,非socket。MyPLinux联盟
EINTR 被信号所中断。MyPLinux联盟
EAGAIN 此动作会令进程阻断,但参数s的soket为补课阻断的。MyPLinux联盟
ENOBUFS 系统的缓冲内存不足。MyPLinux联盟
EINVAL 传给系统调用的参数不正确。MyPLinux联盟
范例
#include < sys/types.h >MyPLinux联盟
#include < sys/socket.h >MyPLinux联盟
# include <netinet.in.h>MyPLinux联盟
#include <arpa.inet.h>MyPLinux联盟
#define PORT 2345 /*使用的port*/MyPLinux联盟
main(){MyPLinux联盟
int sockfd,len;MyPLinux联盟
struct sockaddr_in addr;MyPLinux联盟
char buffer[256];MyPLinux联盟
/*建立socket*/MyPLinux联盟
if(sockfd=socket (AF_INET,SOCK_DGRAM,0))<0){MyPLinux联盟
perror (“socket”);MyPLinux联盟
exit(1);MyPLinux联盟
}MyPLinux联盟
/*填写sockaddr_in 结构*/MyPLinux联盟
bzero ( &addr, sizeof(addr) );MyPLinux联盟
addr.sin_family=AF_INET;MyPLinux联盟
addr.sin_port=htons(PORT);MyPLinux联盟
addr.sin_addr=hton1(INADDR_ANY) ;MyPLinux联盟
if (bind(sockfd, &addr, sizeof(addr))<0){MyPLinux联盟
perror(“connect”);MyPLinux联盟
exit(1);MyPLinux联盟
}MyPLinux联盟
while(1){MyPLinux联盟
bezro(buffer,sizeof(buffer));MyPLinux联盟
len = recvfrom(socket,buffer,sizeof(buffer), 0 , &addr &addr_len);MyPLinux联盟
/*显示client端的网络地址*/MyPLinux联盟
printf(“receive from %sn “ , inet_ntoa( addr.sin_addr));MyPLinux联盟
/*将字串返回给client端*/MyPLinux联盟
sendto(sockfd,buffer,len,0,&addr,addr_len);”MyPLinux联盟
}MyPLinux联盟
}MyPLinux联盟
执行
请参考recvfrom()MyPLinux联盟
 
MyPLinux联盟
MyPLinux联盟
MyPLinux联盟
setprotoent(打开网络协议的数据文件)
相关函数
getprotobyname, getprotobynumber, endprotoentMyPLinux联盟
表头文件
#include <netdb.h>MyPLinux联盟
定义函数
void setprotoent (int stayopen);MyPLinux联盟
函数说明
setprotoent()用来打开/etc/protocols, 如果参数stayopen值为1,则接下来的getprotobyname()或getprotobynumber()将不会自动关闭此文件。MyPLinux联盟
 
MyPLinux联盟
MyPLinux联盟
MyPLinux联盟
setservent(打开主机网络服务的数据文件)
相关函数
getservent, getservbyname, getservbyport, endserventMyPLinux联盟
分页:1 2 3 4 [5] 6
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息