SOCKET基础

来源:互联网 发布:miss淘宝 编辑:程序博客网 时间:2024/04/27 22:13

  呵呵,我的水平也只够写点基础的,如果你是高手,那么可以直接跳过了。。以免耽误时间。。。

  本文的目的只是为了帮助新手更好的入门,消除一些疑虑。

  SOCKET,顾名思义,套接字,插槽,为什么这么叫那,其实它是一种接口而生的结构体,就好像货车拉货,需要一个箱子来包装货物,它就是一种用于承载数据的介质,我们把数据放入其中,根据TCP/IP规则让我们来区分各个数据包的归宿,所谓规则就是IP+端口,只要大家明确了这个,那就都好理解了,可能开始都很迷糊,怎么传输还非要弄个SOCKET干嘛,这东西非得需要吗?这种疑虑同样在初期困扰着我,不过现在好了,我来帮助大家消除这个疑问,设置好sockaddr_in结构体,我们需要把它保存在创建的SOCKET中,所以需要这么一个BIND()函数,接下来,SOCKET有了,地址也绑定好了,如果作为服务端,需要进行监听啊,所以用到LISTEN(),来设置监听的队列长度,这里是否可以并发处理取决于你程序是否是并发程序,如果写成了单线程的,那就只能一个一个的来了,告知服务端开始监听指定SOCKET后,其实就是这个结构体在相应端口专门等待承载数据,就好比货车就位了等待货源一样,那么接下来需要一个ACCEPT()来负责接受货物,你可能又疑惑了,为什么刚刚监听了,怎么又来一个函数干嘛,呵呵,别急,这个函数自有他的用处,你想啊,数据来了,你需要怎样才能让该货物到达货车上那?这个函数其实起到了一个桥梁或者可以理解为是吊车的作用,他负责把接受到SOCKET结构体的信息相应的保存起来,说白了,我们接受了后往往需要给对方发送信息,那么ACCEPT()创建一个新的SOCKET来连接客户SOCKET,并保存起地址信息,这样我们就用新创建的套接字来和对方沟通,呵呵,这下多少明白一些了吧,好吧,剩下更加深入的就得靠大家自己了,我该说的都说了,有什么不对的地方多多批评,有什么有价值的就自己留下,:)。