Socket 编程基础概念

来源:互联网 发布:手机淘宝天天特价在哪 编辑:程序博客网 时间:2024/05/18 00:18

 原本想列出一些简单的网络概念之类知识,但是又发现那种感觉了,以前学会使用turbo c 2.01编写hello world的时候,我就写了一些。。。现在我绝对不会再写了,我觉得笔记就是应该能突出要学习的知识点,这里并不是暗示我对计算机网络这门课程有多么精通。只是说,基础的网络,我的知识还是够用了。说这么多,就是怕那天哪个牛人看到我的笔记了,鄙视的大笑一番。也许是我想多了,我有时候看见某本书上,几年前我的笔记时,我自己都会笑。。。 okdokey,言归正转

 

Sockets are usually implemented by an API library such as Berkeley sockets, first introduced in 1983. Most implementations are based on Berkeley sockets, for example Winsock introduced in 1991. Other socket API implementations exist, such as the STREAMS-based Transport Layer Interface (TLI).

---------------------节选于wikipedia

Socket API是网络编程的基础,我还记得在哪里看到有人说,学习网络编程应该首先学习Unix的socket,原因是windows socket api添加了一些让他觉得很不必要的东西,我记得貌似如鹏网上好象有Windows socket API编程的视频教程,讲师还专门做了什么隐藏了一些不必要的细节。

总的来说,我觉得,学习网络编程直接去使用已经封装好的类,对网络编程的理解不利。所以最好还是先回顾一下Socket API编程,鉴于我懒得去折腾Unix,所以还是回顾下Windows Socket API基础吧。

 

一、Winsock流程简述

1.基于面向连接的socket编程(TCP)

      服务器端:

      (1)创建套接字(socket)

      (2)将套接字绑定到一个特定的IP和PORT

      (3)将套接字设为监听模式,准备接受客户的请求(listen)

      (4)准备客户请求到来;当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept)

      (5)用返回的套接字和客户端进行通信(send/recv)

      (6)返回,等待另一客户请求.

      (7)关闭套接字.

     客户端:

      (1)创建套接字(socket)

      (2)向服务器发出连接请求(connnect)

      (3)和服务器端进行通信(send/recv).

      (4)关闭套接字.

 

2.    基于面向无连接的socket编程 (UDP)

服务器端:

      (1)创建套接字(socket)

      (2)将套接字绑定到一个特定的IP和PORT

      (3)用返回的套接字和客户端进行通信(recvfrom)

       (4)关闭套接字.

     客户端:

      (1)创建套接字(socket)

      (2)向服务器发送数据(sendto)

      (3)关闭套接字.

 

 参考资料:

http://blog.csdn.net/wuhuwy/article/details/4039487

http://zhucuicui.96986.blog.163.com/blog/static/5833370220113204565797/