以知SOCKET描述符s,用什么函数可以得到它的协议类型

atm008 2006-03-11 10:14:22
以知SOCKET描述符s,用什么函数可以知道它的协议类型,TCP/UDP
...全文
71 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
striking 2006-03-12
  • 打赏
  • 举报
回复
int optval,optlen = sizeof(int);
getsockopt(s,SOL_SOCKET,SO_TYPE,(char *)&optval,&optlen);


optval == 1 //tcp
nuaawenlin 2006-03-12
  • 打赏
  • 举报
回复
来晚了
建立一个socket 函数: int socket(int domain, int type, int protocol); domain 指明所使用的协议族,通常为PF_INET,表示互联网协议族(TCP/IP 协议族);type 参数指定socket类型:SOCK_STREAM 或SOCK_DGRAM,Socket 接口还定义了原始Socket(SOCK_RAW),允许程序使用低层协议;protocol 通常 赋值"0"。Socket()调用返回一个整型socket 描述符,你可以在后面的调用使用 它。 Socket 描述符是一个指向内部数据结构的指针,它指向描述符表入口。调 用Socket 函数时,socket 执行体将建立一个Socket,实际上"建立一个Socket" 意味着为一个Socket 数据结构分配存储空间。 Socket 执行体为你管理描述符 表。 配置socket 连接 通过socket 调用返回一个socket 描述符后,在使用socket 进行网络传输以 前,必须配置该socket。面向连接的socket 客户端通过调用Connect 函数socket 数据结构中保存本地和远端信息。无连接socket 的客户端和服务端以及 面向连接socket 的服务端通过调用bind 函数来配置本地信息。 Bind 函数原型为: int bind(int sockfd,struct sockaddr *my_addr, int addrlen); 连接建立 面向连接的客户程序使用Connect 函数来配置socket 并与远端服务器建立 一个TCP 连接,其函数原型为: int connect(int sockfd, struct sockaddr *serv_addr,int addrlen); Sockfd 是socket 函数返回的socket 描述符;serv_addr 是包含远端主机IP 地 址和端口号的指针;addrlen 是 远端地质结构的长度。Connect 函数在出现错误 时返回-1,并且设置errno 为相应的错误码。进行客户端程 序设计无须调用 bind(),因为这种情况下只需知道目的机器的IP 地址,而客户通过哪个端口与 服务器建立 连接并不需要关心,socket 执行体为你的程序自动选择一个未被占 用的端口,并通知你的程序数据什么时 候到打断口。 Connect 函数启动和远端主机的直接连接。只有面向连接的客户程序使用 socket 时才需要将此socket 与 远端主机相连。无连接协议从不建立直接连接。面向连接的服务器也从不启动一 个连接,它只是被动的在 协议端口监听客户的请求。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧