设为首页 加入收藏

TOP

Linux网络编程学习笔记
2014-11-24 11:07:41 来源: 作者: 【 】 浏览:0
Tags:Linux 网络编程 学习 笔记

抽时间学习了Linux的网络编程,以前只是对socket有个字面上的了解,具体的机制和用法一无所知。正好项目要用,学习下,做个笔记。


在Linux上,任何都可以当做文件来对待。获得一个文件描述符,就可以对它进行读写操作。socket也是一样。


socket在Linux下被翻译成套接字,我觉得这个翻译真的很烂,第一次接触的人不可能知道套接字是个什么东西。翻译成插座反而直观明了,更容易理解。


socket是为c/s模型设计的,也就是客户--服务器模型。解决了进程间通信的问题。


下面主要说的面向连接的socket,无连接的socket就不讲了。


简单的将,服务端起一个socket,监听一个端口,等待客户端的连接,然后客户端起一个socket,指向服务端的ip地址,端口号,向服务器发起连接请求。连接成功后就可以发送信息。看一下简单的流程



前面讲了socket可以当做一个文件来读写。那么读写文件一般都是要获得一个文件描述符,socket通信要获得一个socket描述符,也可以理解为特殊的文件描述符,叫法不同而已。


通过socket函数获得socket描述符


int socket(int domain , int type , int protocol);


这个函数返回一个int型的值,就是socket描述符。如果发生错误则返回-1。


domain确定通信域,包括地址格式。通常被设为AF_INET代表IPv4因特网。


type确定socket类型,是无连接还是有链接的。


protocol通常设为0,表示按给定的域和socket类型选择默认协议。比如domain为AF_INET,type为SCOK_STREAM时,默认协议就是TCP。


int bind (int sockfd , const struct sockaddr *my_addr , int addrlen) ;


其中,sockfd就是socket函数返回的socket描述符;my_addr是一个指向struck sockaddr的指针,包含地址信息:名称、端口和ip地址。


addrlen一般设为sizeof(struct sockaddr);


connect()函数连接服务器地址,声明如下:


int connect (int sockfd, const struct sockaddr *serv_addr, int addrlen);


返回一个int型的值,连接成功返回0,出错则返回-1;


参数sockfd还是socket描述符,此时是请求连接的socket。


serv_addr就是服务器地址。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇使用 Guard 在 Android 上进行连.. 下一篇一个仿 Eclipse 欢迎窗口的代码 -..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·有没有哪些高效的c++ (2025-12-27 08:20:57)
·Socket 编程时 Accep (2025-12-27 08:20:54)
·计算机网络知识点总 (2025-12-27 08:20:52)
·一篇说人话的文章, (2025-12-27 07:50:09)
·Python Web框架哪家 (2025-12-27 07:50:06)