socket網路程式設計注意事項

2021-09-02 05:27:59 字數 2913 閱讀 2906

今天上了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.怎樣玩?業務流程...