基于C++ Builder 5的Socket组件实现的聊天程序(一)
首先,声明一下:我的这个程序大部分借鉴了《C++ Builder 实用技术与典型案例》,有这本书的朋友可以不必看我的这篇文章了,没有这本书但又想学习Socket编程的初学者可以继续,J 。
然后,我想介绍一下C++ Builder的Socket的相关知识,这和网上的好多例子的套路一样,呵呵。所以呢,我就抄一下别人的话,因为讲来讲去都是这些东西,而且我自己的水平有限,也讲不出有用的东西来,我也是初学者,我只是想给那些迷失在网上的各式各样而又差不多的说法的初学者提供个方便,呵呵。
由于Socket最初是为Unix而开发的,所以它在使用的时候,与Unix环境下对一个文件的操作有些相似,例如在利用Socket来开发一个服务器与客户机程序时,在服务器端建立一个Socket可以按照以下的步骤来完成。
(1)建立套接口
由于互联网的进程通信中,要全局标识一个进程需要一个“半相关”三元组(协议,本地主机地址,本地端口号),描述一个完整的进程通信实例则需要一个被称为“相关”的五元组(协议,本地主机地址,本地端口号,远端主机地址,远端端口号(也就是目标地址和端口号))描述,如:
server = socket(AF_INET, SOCE_STREAM, 0)
(2)建立连接
调用listen()函数标识开始侦听,再通过accetp()调用等待接受从客户机端连接,如:
listen(server , 1)
accept()
等待连接请求,一旦有连接请求发来,该函数就建立一个和server有相同属性的新的套接口。 (“相同属性的新的套接口”,我对这句话也不是太理解,可能是说两个Socket的通信协议和端口号相同)
(3)接收和发送数据
完成以上的步骤后就可以接收和发送数据了。可利用
recv(ConnectSocket,buf,924,0