计算机网络socket linux下用c或c++写
发布时间:2025-05-12 00:09:10 发布人:远客网络
一、计算机网络socket linux下用c或c++写
我这有一段最简单的SOCKET连接服务端的~!前阵子装Ubuntu 10后写着实验用的,这是最基本的TCP服务端框架。各种函数的条用跟 WINDOWS下的一样(我说的WINDOWS下可不是MFC喔~!)客户端自己琢磨,不懂的话再发你~!至于你要的细节,我感觉还是自己写的好
人不能太懒~!必须深入认识否则你领略不到 C程序设计的精髓~!
//////////代码如下//////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
///////////////////////// H*F*W 2010.05.21 In GuangZhou///////////////////////////
///////////////////////// LINUX SOCKET实验最简单服务端///////////////////////////
/////////////////////// linux编程 SOCKET,GTK有共同兴趣的朋友+我 Q: 176469428////////
int Hlisten(unsigned short hport)
int hsock,rhsock,cc,alen,ret;
if((hsock=socket(AF_INET,SOCK_STREAM,0))==-1){printf("Error in socket()\n");return 0;}//建立套接字
memset(&hlsock,0,sizeof(hlsock));//初始化SOCKET空间
hlsock.sin_port=htons(hport);///监听端口
hlsock.sin_addr.s_addr=htonl(INADDR_ANY);///地址族
setsockopt(hsock,SOL_SOCKET,SO_REUSEADDR,&ret,sizeof(ret));
if(bind(hsock,(struct sockaddr*)&hlsock,sizeof(hlsock))==-1){printf("Error in bind()\n");return 0;}//帮定
if(listen(hsock,0)==-1){printf("Error in listen()\n");return 0;}///进入监听状态
rhsock=accept(hsock,(struct sockaddr*)&hlsock,&alen);///接受客户端接入
cc=recv(rhsock,hbuf,sizeof(hbuf),0);///等待接收数据
printf("%s",hbuf);///显示接收内容
int main(int argc,char*argv[])
//if(argc<=1){printf("usge: [port]");return 0;}
Hlisten(330);//调用监听过程传入监听端口
///////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
//////////////////使用gcc编译直接就可以看到效果////////////////
/////////////////////////////////////////////////////////////////
二、请问c语言socket编程客户端如何与客户端通信的啊
1、设想一个类似于QQ的通信场景。建立一个服务器,作为消息的中转站。假设A、B、C是客户端。如果A想要向B发送消息,A会向服务器发送一条包含接收者B和消息内容的信息,例如(A,[B],"我是A,这是我给B的消息")。服务器接收到消息后,会根据接收者列表将消息转发给相应的客户端B。
2、如果A想要向B和C同时发送一条消息,A可以向服务器发送一条包含接收者B和C以及消息内容的指令,例如(A,[B,C],"我是A,这是我给B和C发送的消息")。服务器接收到这条消息后,会将消息内容分别转发给B和C。
3、当服务器需要向A、B、C发送一条消息时,必须先与这三个客户端都建立连接,然后分别向它们发送同一条消息。
4、服务器启动后,会监听socket连接。一旦有客户端请求连接,比如A请求连接,服务器会创建一个线程,如SA,专门处理A与服务器之间的通信。服务器继续监听其他可能的连接请求。SA线程仅负责处理服务器与客户端A之间的通信。
5、类似地,SB线程专门负责处理服务器与客户端B之间的通信,而SC线程则专门负责处理服务器与客户端C之间的通信。
6、服务器有一个名为transpond的方法,用于处理转发消息。SA、SB、SC线程调用此方法来实现消息的转发和通信。
三、C++新手如何学习socket
1、先从最简单的Socket文档里了解普通的客户端和服务端工作步骤;
2、再而逐步了解阻塞和非阻塞模式;
3、再继续理解TCP/IP中的可靠连接和非可靠连接;
4、写出简单的客户端服务端工程,然后接着学习更多的协议,察看<<Windows核心编程>>;
5、最后再学习异步I/O操作,完成端口的使用方式,进而写出功能强大的Socket通讯程序。