想找有關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返回的信息來跟蹤路由器