C_and_CPP 板


LINE

開發平台(Platform): (Ex: Win10, Linux, ...) Win7 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) Microsoft Visual Studio C++ 問題(Question): 我最一開始有撰寫UDP Server以及UDP Client,UDP開著,client發送封包給server, server接收到後,會發送回給client,所以client可以發送跟接收 但我最近在改寫時就發現server跟client連不到,這次的寫法是 server發送封包給client接收 但就接收不到了,應該說根本沒有連上 但我不太覺得程式碼有錯誤,因為我是參考之前成功的範例去改的 所以不知道是有程式碼以外的問題嗎? 預期的正確結果(Expected Output): server發送的封包client可以接收成功 出現的error都是在接收發送那裏接下來進入的if bind或者初始的設定沒跑出error 程式碼(Code):(請善用置底文網頁, 記得排版) Server端 #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include <winsock2.h> #include <iostream> #include <sys/types.h> using namespace std; #pragma comment(lib,"ws2_32.lib") //Winsock Library #define SERVER_PORT1 8889 #define BUFLEN 1024 int _tmain(int argc, _TCHAR* argv[]){ struct sockaddr_in addrsend; SOCKET s1; int length_addrsend; char buf[BUFLEN]; int sendbol; int receivebol; double cur_ang[3]; WSADATA wsa; printf("\nInitializing Winsock..."); if (WSAStartup(MAKEWORD(2,2),&wsa) != 0){ printf("Failed. Error Code : %d",WSAGetLastError()); } printf("Initialized.\n"); if ((s1= socket(AF_INET, SOCK_DGRAM, 0)) <0){ perror ("socket s1 failed"); } memset(&addrsend,'\0',sizeof(addrsend)); addrsend.sin_family = AF_INET; addrsend.sin_addr.s_addr = htonl(INADDR_ANY); addrsend.sin_port = htons(SERVER_PORT1); if (bind(s1,(struct sockaddr*)&addrsend,sizeof(addrsend)) <0) { perror ("bind s1 failed\n"); } printf("bind done"); length_addrsend=sizeof(addrsend); printf("Server is ready to receive !!\n"); printf("Can strike Cntrl-c to stop Server >>\n"); memset(buf,'\0', BUFLEN); cur_ang[0]=0.5678; cur_ang[1]=0.51278; cur_ang[2]=0.589678; while(1){ sprintf(buf,"%f %f %f ",cur_ang[0],cur_ang[1],cur_ang[2]); sendbol=sendto(s1,buf,BUFLEN,0,(struct sockaddr*)&addrsend,length_addrsend); if (sendbol<0){ perror("Could not send datagram!!\n"); continue; } memset(buf,'\0',BUFLEN); } closesocket(s1); WSACleanup(); system("pause"); return 0; } Client端 #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <winsock2.h> #include <fcntl.h> #include <string.h> #include <iostream> #include <cstdio> #include <cassert> #include <cmath> #include <math.h> #include <time.h> #pragma comment(lib,"ws2_32.lib") using namespace std; #define SERV_PORT 8889 //receive from server #define BUFLEN 1024 #define SERVER "127.0.0.1" int main(int argc, char **argv){ struct sockaddr_in server;//one port struct hostent *hp; /* holds IP address of server */ SOCKET s; int size_server; char data; char buf[BUFLEN]={0}; char buf1[BUFLEN]={0}; int sendbol, receivebol; WSADATA wsa; //Initialise winsock printf("\nInitializing Winsock..."); if (WSAStartup(MAKEWORD(2,2),&wsa) != 0){ printf("Failed. Error Code : %d",WSAGetLastError()); } printf("Initialized.\n"); //create socket if ( (s=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == SOCKET_ERROR){ printf("socket() failed with error code : %d" , WSAGetLastError()); } server.sin_family = AF_INET; server.sin_addr.s_addr = htonl(INADDR_ANY); server.sin_addr.s_addr=inet_addr(SERVER); server.sin_port = htons(SERV_PORT); size_server=sizeof(server); while(1){ receivebol=recvfrom(s,buf,BUFLEN,0,(struct sockaddr*)&server,&size_server); if (receivebol< 0) { printf("receive failed: %d\n" , WSAGetLastError()); } else{ printf("bytes have been received\n"); printf("%s\n",buf); } } closesocket(s); WSACleanup(); system("pause"); return 0; } --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.234.232
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1478618153.A.8E6.html
1F:→ s890269: 會跟程式碼哪個先跑有關係嗎?我是都先跑server 11/08 23:30
2F:推 bibo9901: 你可能要先唸一下網路概論了解什麼是client/server 11/09 00:04
3F:→ bibo9901: 還有IP的意思 11/09 00:04







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP