局域网聊天(UDP)
2011-06-24 10:06
253 查看
#include "windows.h" #include "winsock.h" #include "iostream" using namespace std; #pragma comment(lib, "ws2_32.lib") DWORD WINAPI Recv(LPVOID lParam) { SOCKET * sock = (SOCKET *)lParam; char buff[512]; int len; DWORD IP = GetIP(); SOCKADDR_IN addr; len = sizeof(SOCKADDR); while(1) { ZeroMemory(buff, 512); recvfrom(*sock, buff, 512, 0, (SOCKADDR*)&addr, &len); if (addr.sin_addr.S_un.S_addr != IP) { if(len >= 0) cout<<buff<<endl; } } return 0; } int main() { WSAData wsadata; WORD Vesion; char name[20]; bool nBuflen = true; int optlen = sizeof(nBuflen); Vesion = MAKEWORD(2, 2); if(WSAStartup(Vesion, &wsadata)) return 1; SOCKET sock = socket(AF_INET, SOCK_DGRAM, 0); setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char*)&nBuflen, optlen); //设置为广播socket SOCKADDR_IN addr; addr.sin_addr.S_un.S_addr = INADDR_ANY; addr.sin_family = AF_INET; addr.sin_port = 7800; SOCKADDR_IN addrto; addrto.sin_addr.S_un.S_addr = INADDR_BROADCAST; // inet_addr("172.1.31.1"); addrto.sin_port = 7800; addrto.sin_family = AF_INET; if(SOCKET_ERROR == bind(sock, (SOCKADDR*)&addr, sizeof(SOCKADDR_IN))) cout<<"Error!"<<endl; HANDLE hRecv = CreateThread(NULL, 0, Recv, &sock, 0, NULL); CloseHandle(hRecv); cout<<"请输入您的真实姓名:"<<endl; cin>>name; system("cls"); fflush(stdin); char temp[1024]; char buff[512]; while(1) { ZeroMemory(buff, 512); cin.getline(buff, 512); sprintf(temp, "%s:%s", name, buff); if(strcmp(buff, "exit") == 0) break; sendto(sock, temp, 1024, 0, (SOCKADDR*)&addrto, sizeof(SOCKADDR)); } return 0; }
相关文章推荐
- 用UDP实现局域网内聊天程序
- 用UDP实现局域网内聊天程序
- 用Delphi编写局域网中的UDP聊天程序 (收藏)
- Java 网络 UDP 一个局域网下的聊天小程序
- 基于UDP的MFC局域网聊天程序
- 局域网UDP聊天程序桌面版
- 嵌入式开发第35天(UDP初级应用:局域网聊天)
- socket编程实现的多人局域网聊天(udp)多线程
- 基于UDP的局域网聊天实现
- UDP实现局域网多人聊天
- 基于UDP的局域网聊天的系统原理
- Android基于UDP的局域网聊天通信(有完整Demo)
- 基于UDP协议的局域网网络聊天工具
- VC局域网聊天(UDP)
- udp局域网聊天
- 局域网广播(聊天)程序UDP
- 【项目源码】- 【局域网聊天】android实现局域网聊天 - UDP实现
- 关于使用UDP(TCP)跨局域网,NAT穿透的心得
- Java UDP 多用户 组播 聊天程序
- 写一个基于UDP协议的聊天小程序