MinGW WinSockets 编程
来源:互联网 发布:淘宝手机如何修改中评 编辑:程序博客网 时间:2024/06/10 00:43
前言:
大一的时候一个学长给我推荐MinGW(Minimalist GNUfor Windows) Developer Studio,后来就一直用了下去,感觉比VC++和DEV C好用,比VS更轻量级吧。
最近需要写一个简单的winsockets Client 来测试服务器,发现编译问题。
客户端代码:
#include <iostream>#include <winsock2.h>using namespace std;#pragma comment(lib, "ws2_32.lib")#define PORT 5154#define IP_ADDRESS "127.0.0.1"int main(int argc, char * argv[]){WSADATA Ws;SOCKET ClientSocket;struct sockaddr_in ServerAddr;int Ret = 0;int AddrLen = 0;HANDLE hThread = NULL;char SendBuffer[MAX_PATH];if (WSAStartup(MAKEWORD(2, 2), &Ws) != 0){cout << "Init Windows Socket Failed::" << GetLastError() << endl;return -1;}ClientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (ClientSocket == INVALID_SOCKET){cout << "Create Socket Failed::" << GetLastError() << endl;return -1;}ServerAddr.sin_family = AF_INET;ServerAddr.sin_addr.s_addr = inet_addr(IP_ADDRESS);ServerAddr.sin_port = htons(PORT);memset(ServerAddr.sin_zero, 0x00, 8);Ret = connect(ClientSocket, (struct sockaddr*)&ServerAddr, sizeof(ServerAddr));if (Ret == SOCKET_ERROR){cout << "Connect Error::" << GetLastError() << endl;return -1;}while (true){cout << "Please input Message:"<<endl;cin.getline(SendBuffer, sizeof(SendBuffer));Ret = send(ClientSocket, SendBuffer, (int)strlen(SendBuffer), 0);if (Ret == SOCKET_ERROR){cout << "Send Info Error::" << GetLastError() << endl;break;}}closesocket(ClientSocket);WSACleanup();return 0;}简单分析一下代码:
1.WSAStartup完成Winsocket服务初始化
2.创建套接字
3.设置服务器网络参数
4.发起连接
5.发送数据
6.关闭套接字关闭Winsockets服务
这里出现的问题,在MinGW Studio下编译通过但是在Link(链接)的时候会报错:
undefined reference to `WSAStartup@8'
undefined reference to xxxxxxx
网上有这样的解决方案:
在代码前面加上:
#pragma comment(lib, "ws2_32.lib")
发现并没有什么作用。
后来得知,MinGW没有#pragma comment这样的预处理命令。
最终解决办法:
project -> settings -> links -> Extra linking options
加上:-lws2_32
0 0
- MinGW WinSockets 编程
- loadrunner使用Winsockets协议
- 使用 mingw+msys系统编程
- MinGW
- mingw
- mingw
- mingw
- MinGW
- mingw
- MinGW
- MinGW
- mingw
- MinGW
- MinGW
- mingw
- MinGW
- MinGw
- MinGW
- 不同环境间FSG报表组件的传输
- SURF算法
- 在安卓开发中实现退出App时销毁所有Activity
- FPGA+DSP视频监控
- 集合类型图
- MinGW WinSockets 编程
- 字符串处理 hdu 1048
- HBase与MapReduce集成2-Hdfs2HBase
- SequoiaDB(巨杉数据库)成为国内首家Spark认证数据库
- poj2891--Strange Way to Express Integers(不互素的中国剩余定理)
- WSDL1.1学习笔记
- 摄像头和SD卡(一)
- HDU 5352 MZL's City(2015 多校 第5场,最小费用最大流)
- android的logcat的message有字符长度的限制,超过将直接截断