当前位置:Linux教程 - Linux文化 - 求LINUX下SOCKET编程资料 ?

求LINUX下SOCKET编程资料 ?


最近学校布置了一个关于在LINUX下用C语言借助于SOCKET实现TRACERT地作业

想找有关LINUX下SOCKET编程方面的资料,求各路高手帮忙。

源程序、电子书、或相关编程思路都行。小弟还是这方面的新手,如果能推荐一本入门书也不错:) 总之谢谢各位帮忙了!!!

>>> 此贴的回复 >> UNIX Network Programming Vol1,3/e,网上下载。

>>> 此贴的回复 >> 《UNIX网络编程》两卷

>>> 此贴的回复 >> 给你两段源码,第一段是客户端,第二段是服务器.运行是开两个终端,一个运行客户端,另一个运行服务器,先开服务器,再开客户端. 客户端 #include #include #include #include #include #include #include void main() { int sock_cli; struct sockaddr_in serv_addr; sock_cli=socket(AF_INET,SOCK_STREAM,0); if(sock_cli!=-1) printf("Socket created OK\n"); else exit(1); bzero(&serv_addr,sizeof(serv_addr)); serv_addr.sin_family=AF_INET; serv_addr.sin_port=htons(2100); serv_addr.sin_addr.s_addr=inet_addr("127.0.0.1"); if(connect(sock_cli,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr))!=-1){ printf("Connected OK\n"); } else exit(1); } 服务器 #include #include #include #include #include #include #include #define MY_PORT 2100

void main() { int sock_serv,new_fd; unsigned int sin_size; struct sockaddr_in host_addr,remo_addr; sock_serv=socket(AF_INET,SOCK_STREAM,0);/*主机建立socket*/ if(sock_serv!=-1) printf("Socket created OK\n"); else exit(1); bzero(&host_addr,sizeof(host_addr)); host_addr.sin_family=AF_INET;/*初始化主机socket地址*/ host_addr.sin_addr.s_addr=htonl(INADDR_ANY); host_addr.sin_port=htons(MY_PORT); if(bind(sock_serv,(struct sockaddr *)&host_addr,sizeof(struct sockaddr))!=-1) printf("Binded OK\n"); else exit(1); if(listen(sock_serv,3)!=-1) printf("listening\n"); else exit(1); while(1){ sin_size = sizeof(struct sockaddr); new_fd = accept(sock_serv, (struct sockaddr *)&remo_addr, &sin_size); if(new_fd!=-1){ printf("Acepted OK\n"); printf("server: Get connection from %s\n", inet_ntoa(remo_addr.sin_addr));} else exit(1); } } 两段都在gcc下编译通过.

>>> 此贴的回复 >> 一个客户端的程序就可以了,发送一个数据包,根据R返回的信息来跟踪路由器