论坛: 菜鸟乐园 标题: 几个基本socket函数 复制本贴地址    
作者: cimsxiyang [cimsxiyang]    版主   登录
几种socket函数的原形:
/*socket*/
#include<sys/socket.h>
int socket (int family,int type,int protocol);
/*family  参数指定协议族*/
/*type   参数指定socket类型*/
/*protocol参数为协议,一般将其置0*/
--------------------------------------
/*bind*/
#include <sys/socket.h>
int bind(int sockfd,const sockaddr*myaddr,socklen_t addrlen);
/*sockfd参数为socket描述符,是socket()函数的成功调用*/
/*sockaddr*myaddr是一个指向与协议有关的地址结构的指针*/
/*socklen_t addrlen为地址的长度*/
--------------------------------------------
/*connect*/
/*only for tcp serv*/
#include<sys/socket.h>
int connect (int sockfd,const struct sockaddr*servaddr,socklen addrlen);
/*sockfd 参数为socket调用返回的socket描述符*/
/*sockaddr*servaddr指向socket地址结构的指针*/

/*socklen addrlen为地址结构的大小*/
--------------------------------------------------

/*listen*/
/*only for tcp serv*/
#include<sys/socket.h>
int listen (int sockfd,int backlog);
/*sockfd 参数为socket调用返回的socket描述符*/

/*backlog 规定了内核为该socket排队的最大连接数*/

--------------------------------------------
/*accept*/
/*only for tcp serv*/

#include<sys/socket.h>
int accept (int sockfd,struct sockaddr*cliaddr,socklen_t *addrlen);
/*sockfd  ----listening socket*/
/*struct sockaddr*cliaddr和socklen_t *addrlen分别用来返回连接对方进程的协议地址和地址长度*/
-----------------------------------------
/*getsockname*/
#include<sys/socket.h>
int getsockname (int sockfd,struct sockaddr *localaddr,socklen_t *addrlen)
/*sockfd 参数为socket调用返回的socket描述符*/
/*localaddr和addrlen分别用来返回与socket关联的本地协议地址和地址长度*/
--------------------------------------------
/*getpeername*/
#include<sys/socket.h>
int getpeername (sockfd,struct sockaddr *peeraddr,scklen_t *addrlen);
/*sockfd----socket的描述符*/

/*peeraddr和addrlen分别用来返回与socket关联的远程协议地址和长度地址*/
--------------------------------------------
/*shutdowm*/
#include<sys/socket.h>
int shutdowm (int sockfd,int howto);
/*sockfd-------socket的,描述符*/
/*howto--------指定shutdown的方法*/
--------------------------------------------
/*close*/
#include<sys/socket.h>
int close(int sockfd);




end!!




地主 发表时间: 02/24 00:17

回复: nhaiming [nhaiming]   论坛用户   登录
完全看不懂!!请问怎么样才能看懂呀??

B1层 发表时间: 02/24 15:49

回复: cimsxiyang [cimsxiyang]   版主   登录
socket()----应用进程用它来创建一个新的指定类型的插口.
bind()  ----将一个本地的协议地址和插口联系起来,一般来说,作为客户的进程不会去关心它的本地地址是什么,在这种情况下,进程在通信之前没有必要调用bind(),内核会自动为其选择一个本地地址
connect()-----建立一条与服务器的连接.如果进程在调用connect()之前没有调用bind(),来绑定本地地址,那么内核会选择并且隐式地绑定一个地址到插口.
listen()------通知协议进程准备接受插口上连接请求,因此,它只用于tcp服务器
accept()------等待客户端的连接请求
getsockname()------获取与插口相关联的本地协议地址
getpeername()-------获取与插口关联的远程协议地址
shutdown()-----------按指定方式来关闭插口的read 通道,write通道或者是读写通道.
close()------关闭插口,终止tcp连接

-----------------------------------------------------------
end


B2层 发表时间: 02/24 16:28

回复: fubin [fubin]   论坛用户   登录
好厉害呀
我好崇拜你呀
你 是干什么的呀
能说吗


B3层 发表时间: 02/25 11:16

回复: cimsxiyang [cimsxiyang]   版主   登录
一个爱好网络的菜鸟
:)

B4层 发表时间: 02/25 12:59

论坛: 菜鸟乐园

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号