从一些问题开始阐述我所理解的socket编程(基本)
---------------------------------------------------------------------------------------------------------------
1,socket 是什么?
socket 是一种网络中通信的概念。一种方式方法。利用此概念就能够设计出网络中互相访问的进程。
2,socket 解决的问题是什么?
网络间进程通信。(一台计算机要想访问另一台(网络可达)计算机,就必须通过本地进程访问另一端的一个进程)
3,网络中完全不相干的进程如何确定对方?
ip地址,协议,端口,标识了(网络中计算机)进程,网络中的进程通信就可以利用这个标志与其它进程进行交互。
4,网络中连接的模式?
绝大多数都是以 Client—Server模式。
.....(未完待续)
如果要想学好unix编程,就必须接受unix的哲学理念
---------------------------------------------------------------------------------------------------------------
unix的哲学理念其中之一就是 “一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。
Socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)
.....(未完待续)
知识是零散的,非要组合便—>面目全非
---------------------------------------------------------------------------------------------------------------
这一切的一切就是利用一些函数组合实现不同功能,达到预期目的。
要想学好用这些函数,就必须掌握好函数的返回类型和形参列表。
1,双方建立连接
服务器端先初始化(socket),然后与端口绑定(bind),对端口进行监听(listen),调用(accept)阻塞,等待客户端连接。
(socket,bind,listen,这三个函数能够在服务端建立起一块区域,使得网络中其他主机可以访问)
(阻塞的概念可以理解为等待直到为止)
客户端初始化一个(socket),然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。
2,数据交互
客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。
在unix中,主要就是i/o操作。用俗话说就是客户端写一个,服务器端读一个,服务器端读完了后写一个处理过的数据,客户端读取此处理过的。
这个过程循环,就是服务器的运行过程。
socket经典介绍图:
原文:http://www.cnblogs.com/wk23/p/3537089.html