以下是 Socket 网络编程的一段模板代码
void SocketText(void)
{
WSADATA wsaData;
// 初始化 socket 库
WSAStartup(MAKEWORD(2,0),&wsaData);//MAKEWORD(2,0)ÊÇsocket°æ±¾
//´ 创建一根电线
SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
SOCKADDR_IN sa;
sa.sin_family=AF_INET;
// 设置电线连接服务器端的端口
sa.sin_port = htons(IPPORT_SMTP);// 邮件服务端口
// 主机获得 IP 地址
sa.sin_addr.S_un.S_addr = inet_addr("123.125.50.135");
if(connect(sock,(SOCKADDR *)&sa,sizeof(sa))==SOCKET_ERROR)
{
ShowError();
return;
}
closesocket(sock);
WSACleanup();
}
void ShowError()
{
TCHAR* lpMsgBuf;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER| // 自动分配消息缓冲区
FORMAT_MESSAGE_FROM_SYSTEM, //´ 从系统获得消息
NULL,GetLastError(), // 获取错误信息标识
MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),// 使用系统缺省语言
(LPTSTR)&lpMsgBuf, // 消息缓冲区
0,
NULL);
MessageBox(NULL,lpMsgBuf,"",MB_ICONERROR);
}
当然要添加 #include <winsock2.h> 头文件,但是在标准 C-Free 编译器中出现会出现 [Error] C:/PROGRA~1/C-FREE~1/mingw32/bin/ld.exe: cannot find - winsock2.lib 错误,此时工程设置里添加了 winsock2.lib ,当没有相同名字时,就找最相近的,现在问题来了,如果直接如下操作
则出现 ld.exe cannot find ID 或 IP 提示错误,这时我们就要进行一个小小的处理,如下将
图( 1 )
图( 1 )操作改成下图( 2 )操作
图( 2 )
即直接输入库名,好,大功告成!