今天上了socket網路程式設計,照著課本上的**敲了一遍,居然發現了好多錯誤?當然其中不乏自己敲錯了,但是真的書上好多坑,學校的這本書真的好辣雞
以下是我找朋友修改後的**
client端
#include#include #include #include#include #include #include #include #include #define port 4321
#define buffer_size 1024
int main(int argc,char *argv)
memset(buf,0,sizeof(buf));
sprintf(buf,"%s",argv[2]);
if((sockfd=socket(af_inet,sock_stream,0))==-1)
//printf("socket id=%d\n",socket);
serv_addr.sin_family=af_inet;
serv_addr.sin_port=htons(port);
//serv_addr.sin_addr=*((struct in_addr*)host->h_addr);
serv_addr.sin_addr.s_addr=htonl(inaddr_any);
bzero(&(serv_addr.sin_zero),8);
if(connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr))==-1)
if((sendbytes=send(sockfd,buf,strlen(buf),0))==-1)
close(sockfd);
exit(0);
//int i=1;
//setsockopt(sockfd,sol_socket,so_reuseraddr,&i,sizeof(i));
/* if(bind(sockfd,(struct sockaddr *)&server_sockaddr,sizeof(struct sockaddr))==-1)
printf("bind success!\n");
if(listen(sockfd,max_que_conn_nm)==-1)
printf("listening....\n");
if((client_fd=accept(sockfd,(struct sockaddr *)&client_sockaddr,&sin_size))==-1)
memset(buf,0,sizeof(buf));
if((recvbytes=recv(client_fd,buf,buffer_size,0))==-1)
printf("recived a message:%s\n",buf );
close(sockfd);
exit(0);
*/}
server端
#include#include #include #include#include #include #include #include #define port 4321
#define buffer_size 1024
#define max_que_conn_nm 5
int main()
printf("socket id=%d\n",socket);
server_sockaddr.sin_family=af_inet;
server_sockaddr.sin_port=htons(port);
server_sockaddr.sin_addr.s_addr=inaddr_any;
bzero(&(server_sockaddr.sin_zero),8);
int i=1;
setsockopt(sockfd,sol_socket,so_reuseaddr,&i,sizeof(i));
if(bind(sockfd,(struct sockaddr *)&server_sockaddr,sizeof(struct sockaddr))==-1)
printf("bind success!\n");
if(listen(sockfd,max_que_conn_nm)==-1)
printf("listening....\n");
if((client_fd=accept(sockfd,(struct sockaddr *)&client_sockaddr,&sin_size))==-1)
memset(buf,0,sizeof(buf));
if((recvbytes=recv(client_fd,buf,buffer_size,0))==-1)
printf("recived a message:%s\n",buf );
close(sockfd);
exit(0);
}
然後開啟兩個終端,分別輸入
//第一步
gcc -o server server.c
gcc -o client client.c
//第二步
./server
./client localhost hello
最終結果如下:
socket id=906817216
bind success!
listening....
recived a message:hello
這個版本與原來的**相比差在client.c的第32行**
//serv_addr.sin_addr=*((struct in_addr*)host->h_addr);
serv_addr.sin_addr.s_addr=htonl(inaddr_any);
Socket注意事項
socket方法 getinetaddress 遠端服務端的ip位址 getport 遠端服務端的埠 getlocaladdress 本地客戶端的ip位址 getlocalport 本地客戶端的埠 getinputstream 獲得輸入流 getoutstream 獲得輸出流 值得注意的是,在這些方...
Socket 注意事項
socket通訊客戶端和使用者端的程式裡,出現了多種資料結構,呼叫了多種函式,使用小白的我要了解socket通訊的過程,每段 的用途和函式呼叫的功能,但是注意不要去糾結這些結構體和函式的引數,這些函式和引數雖然比較多,但是可修改的比較少,使用過程中,按照固定格式別抄錯就可以了。1 socket檔案描...
程式設計注意事項
1.動態輸出表頭或資料 每次輸出之前,請先清空表頭以及資料再新增。2.一般資料都要分頁,請直接加上分頁 3.重複性資料的校驗 介面接收資料 1.介面接收資料,一般型別接受 例如 string 列印日誌,之後再轉換成自己想要的格式json等。需求評審 問題一 大面問題 1.是什麼?2.怎樣玩?業務流程...