有關socket(winsock寫法的) |
缺席
|
stele
一般會員 發表:4 回覆:3 積分:1 註冊:2004-04-01 發送簡訊給我 |
想請問一下...小弟這樣子寫要如何才能去接收回應回來的broadcast阿??
WSADATA data; WORD version; struct sockaddr_in st,sa; SOCKET socket_sd; sa.sin_family = PF_INET; sa.sin_port = htons(64513); sa.sin_addr.s_addr = htonl(INADDR_ANY); st.sin_family = PF_INET; st.sin_port = htons(64515); st.sin_addr.s_addr = 0xffffffff; version = (MAKEWORD(2,2)); WSAStartup(version,&data); socket_sd = socket(PF_INET, SOCK_DGRAM, 0); bind( socket_sd, (struct sockaddr far *)&sa, sizeof(sa)); connect( socket_sd, (struct sockaddr far *)&st, sizeof(st)); send( socket_sd, (char *)&sendbuf, sizeof(sendbuf), 0); 這是小弟在vc下寫的程式...不知道是不是可以拿來這邊問...我有用過sniffer去看過packet的傳送...這樣子寫確定會傳出去一個broadcast...而且我也會得到我的server的回應...但是...小弟不知道要怎麼去接收server的回應...請各位大大幫忙一下...給小弟一條明路吧...用了一星期用不出來.. |
stele
一般會員 發表:4 回覆:3 積分:1 註冊:2004-04-01 發送簡訊給我 |
引言:小弟後來終於發現... 小弟只要這樣子寫...如下...就可以接受到資料了...謝謝各位大大~WSADATA data; WORD version; struct sockaddr_in st,sa; SOCKET socket_sd; sa.sin_family = PF_INET; sa.sin_port = htons(64513); sa.sin_addr.s_addr = htonl(INADDR_ANY); st.sin_family = PF_INET; st.sin_port = htons(64515); st.sin_addr.s_addr = 0xffffffff; version = (MAKEWORD(2,2)); WSAStartup(version,&data); socket_sd = socket(PF_INET, SOCK_DGRAM, 0); bind( socket_sd, (struct sockaddr far *)&sa, sizeof(sa)); connect( socket_sd, (struct sockaddr far *)&st, sizeof(st)); send( socket_sd, (char *)&sendbuf, sizeof(sendbuf), 0); int sa_len = sizeof(sa); int so_options = SO_BROADCAST; socket_sd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if(socket_sd != SOCKET_ERROR) { bind( socket_sd, (struct sockaddr *)&sa, sa_len); setsockopt(socket_sd, SOL_SOCKET, so_options, (char *)&so_options, sizeof(so_options)); sendto(socket_sd, buf,sizeof(buf), 0, (struct sockaddr *)&st, sizeof(st)); recvfrom(socket_sd, buf, 1024, 0, (struct sockaddr *)&sa, &sa_len); |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |