MinGW WinSockets 编程
2015-08-05 09:53
120 查看
前言:
大一的时候一个学长给我推荐MinGW(Minimalist GNUfor Windows) Developer Studio,后来就一直用了下去,感觉比VC++和DEV C好用,比VS更轻量级吧。
最近需要写一个简单的winsockets Client 来测试服务器,发现编译问题。
客户端代码:
1.WSAStartup完成Winsocket服务初始化
2.创建套接字
3.设置服务器网络参数
4.发起连接
5.发送数据
6.关闭套接字关闭Winsockets服务
这里出现的问题,在MinGW Studio下编译通过但是在Link(链接)的时候会报错:
undefined reference to `WSAStartup@8'
undefined reference to xxxxxxx
网上有这样的解决方案:
在代码前面加上:
发现并没有什么作用。
后来得知,MinGW没有#pragma comment这样的预处理命令。
最终解决办法:
project -> settings -> links -> Extra linking options
加上:-lws2_32
大一的时候一个学长给我推荐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
相关文章推荐
- CF 560 Gerald's Hexagon
- Qt拷贝文件、文件夹(QFile::copy)
- VS2008中文版安装ASP.NET 3.5 Extensions模板遗失解决方法
- 深入解析Java中的JDBC事务
- DSP5509A——SDRAM操作代码分析
- 【转】C++函数参数中的省略号用法分析
- ArrayList中重复元素处理方法.[Java]
- Silverlight 2 (beta1)数据操作(2)——使用ASP.NET Web Service进行数据CRUD操作(下)
- C语言冒泡排序实现
- 代码整洁之道--注释,格式
- C语言冒泡排序
- c++加密解密算法用java方法替代
- JDK动态代理与Cglib库
- struts 2 的原理 更加详细
- Java NIO框架Netty教程(二) – 白话概念
- 怎么解决windows下使用eclipse和python编译时候 "Non-ASCII character"错误问题
- Java NIO框架Netty教程(一) – Hello Netty
- ASP.NET Web API 接口执行时间监控
- thinkphp+ueditor 上传图片firefox中js报错
- thinkphp 使用过程中遇到的一个小函数