VC++ UDP网络控制台程序
来源:互联网 发布:软件信息服务业 所得税 编辑:程序博客网 时间:2024/05/16 04:37
原文:http://blog.csdn.net/ccf19881030/article/details/16991215
我在server里面分别添加了发送,在clent添加了接收的部分附在最后面.
采用的是VC2008,控制台应用程序,使用UDP编写。
1、服务端代码
//UDPServer.cpp
2、客户端代码
//UDPClient.cpp
先启动服务端UDPServer程序,再启动客户端UDPClient程序,运行结果如下:服务端UDPServer
客户端UDPClient
此时服务端UDPServer的结果会发生变化,会受到客户端发送过来的数据,如下图所示:
参考资料:
1、《VC++深入详解》 第14章网络编程 ,孙鑫主编
2、MSDN帮助文档
#include <WinSock2.h>#include <stdio.h>#define SERVERPORT 6000//服务端口号#pragma comment(lib, "WS2_32.lib");int main(int argc, char *argv[]){//加载套接字库WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 2, 2 );err = WSAStartup( wVersionRequested, &wsaData );if ( err != 0 ) {/* Tell the user that we could not find a usable *//* WinSock DLL. */return -1;}/* Confirm that the WinSock DLL supports 2.2.*//* Note that if the DLL supports versions greater *//* than 2.2 in addition to 2.2, it will still return *//* 2.2 in wVersion since that is the version we *//* requested. */if ( LOBYTE( wsaData.wVersion ) != 2 ||HIBYTE( wsaData.wVersion ) != 2 ) {/* Tell the user that we could not find a usable *//* WinSock DLL. */WSACleanup( );return -1; }/* The WinSock DLL is acceptable. Proceed. *///创建套接字SOCKET sockServer = socket(AF_INET, SOCK_DGRAM, 0);if (INVALID_SOCKET == sockServer){printf("socket() called failed! The error code is: %d\n", WSAGetLastError());return -1;}else{printf("socket() called succesful!\n");}//服务器端SOCKADDR_IN addrServer;addrServer.sin_addr.S_un.S_addr = htonl(INADDR_ANY);addrServer.sin_family = AF_INET;addrServer.sin_port = htons(SERVERPORT);//绑定套接字err = bind(sockServer, (SOCKADDR*)&addrServer, sizeof(SOCKADDR));if (SOCKET_ERROR == err){printf("bind() called failed! The error code is: %d\n", WSAGetLastError());return -1;}else{printf("bind() called successful!\n");}//等待并接收数据SOCKADDR_IN addrClient;//用于接收发送端的地址信息int len = sizeof(SOCKADDR);char recvBuf[100];recvfrom(sockServer, recvBuf, 100, 0, (SOCKADDR*)&addrClient, &len);//打印接收到的数据printf("receive data:%s from client [%s,%d]", recvBuf, inet_ntoa(addrClient.sin_addr), addrClient.sin_port);//发送数据err = sendto(sockServer, "Hello Client", strlen("Hello Client")+1, 0, (SOCKADDR*)&addrClient, sizeof(SOCKADDR));if (SOCKET_ERROR == err){printf("sendto() called failed! The error code is: %s\n", WSAGetLastError());return -1;}else{printf("sendto() called successful!\n");}//关闭套接字closesocket(sockServer);//终止套接字库的使用WSACleanup();return 0;}
clent端:
#include <WinSock2.h>#include <stdio.h>#define SERVERPORT 6000//服务端口号#pragma comment(lib, "WS2_32.lib");int main(int argc, char *argv[]){//加载套接字库WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 2, 2 );err = WSAStartup( wVersionRequested, &wsaData );if ( err != 0 ) {/* Tell the user that we could not find a usable *//* WinSock DLL. */return -1;}/* Confirm that the WinSock DLL supports 2.2.*//* Note that if the DLL supports versions greater *//* than 2.2 in addition to 2.2, it will still return *//* 2.2 in wVersion since that is the version we *//* requested. */if ( LOBYTE( wsaData.wVersion ) != 2 ||HIBYTE( wsaData.wVersion ) != 2 ) {/* Tell the user that we could not find a usable *//* WinSock DLL. */WSACleanup( );return -1; }//创建套接字SOCKET sockClient = socket(AF_INET, SOCK_DGRAM, 0);if (INVALID_SOCKET == sockClient){printf("socket() called failed! The error code is: %d\n", WSAGetLastError());return -1;}else{printf("socket() called succesful!\n");}SOCKADDR_IN addrServer;addrServer.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");addrServer.sin_family = AF_INET;addrServer.sin_port = htons(SERVERPORT);//发送数据err = sendto(sockClient, "Hello server", strlen("Hello server")+1, 0, (SOCKADDR*)&addrServer, sizeof(SOCKADDR));if (SOCKET_ERROR == err){printf("sendto() called failed! The error code is: %s\n", WSAGetLastError());return -1;}else{printf("sendto() called successful!\n");}int len = sizeof(SOCKADDR);char recvBuf[100];recvfrom(sockClient, recvBuf, 100, 0, (SOCKADDR*)&addrServer, &len);//打印接收到的数据printf("receive data:%s from client [%s,%d]", recvBuf, inet_ntoa(addrServer.sin_addr), addrServer.sin_port);//关闭套接字closesocket(sockClient);//终止套接字库的使用WSACleanup();return 0;}
阅读全文
0 0
- VC++ UDP网络控制台程序
- VC++ UDP网络控制台程序
- VC++ UDP网络控制台程序
- udp网络聊天控制台程序
- VC++ TCP网络控制台程序
- VC++ TCP网络控制台程序
- [VC++]控制台程序窗口隐藏(网络转载)
- VC++ 基于UDP的控制台聊天程序socket通信
- VC环境下window网络程序:UDP Socket程序
- vc控制台Timer程序
- VC++ UDP通信程序
- VC6.0控制台程序下实现最简单的UDP网络通信
- VC 控制台程序中隐藏控制台窗口
- UDP网络程序-1
- UDP网络程序
- UDP网络程序
- VC控制台程序编写(转)
- vc中调用控制台程序
- 第一天
- $.ajax 中的contentType...json传参相关
- 微信公众号开发时自定义菜单的url中&符号不见了解决办法
- LC- Number Complement
- Spring boot 入门 踩坑记录---自定义controller无法访问
- VC++ UDP网络控制台程序
- java多态
- 基于js-ipfs-api实现ipfs的文件上传与下载
- Mycat学习笔记
- 给Weka换个好看的界面——Weka3.9+BeautyEye
- ZooKeeper之Java客户端API使用—权限控制。
- 使用PowerDesigner创建JAVA类图
- iOS开发之APNS机制
- HTML学习之路-1