一直对c/c++下的socket编程必是很熟悉,今天终于完成了一个很简单的server/client程序
服务器:
#include <iostream>
#include <Winsock2.h>
#pragma comment( lib, "Ws2_32.lib" )
using namespace std;
const int MY_ERROR = -1;
int main( )
{
WSADATA wsaData;
//初始化Windows Socket 库
if( WSAStartup(MAKEWORD( 2, 2 ), &wsaData)!=0 )
{
cout<<"Error in WSAStartup"<<endl;
return MY_ERROR;
}
//创建一个socket->bind->listen->accept(阻塞)
SOCKET server;
server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(server==INVALID_SOCKET)
{
return 0;
}
sockaddr_in local;
memset(&local, 0, sizeof(local));
local.sin_family = AF_INET;
local.sin_port = htons(8080);
local.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
if( bind(server, (sockaddr*)(&local), sizeof(local))!=0 )
{
cout<<"Error in bind"<<endl;
return MY_ERROR;
}
if( listen(server, 10)!=0 )
{
cout<<"Error in listen"<<endl;
return MY_ERROR;
}
SOCKET client;
sockaddr_in from;
int fromLen = sizeof(from);
memset(&from, 0, fromLen);
cout<<"waiting for connect..."<<endl;
client = accept(server, (sockaddr*)(&from), &fromLen);
char temp[512];
sprintf(temp,"Your IP is %s/r/n",inet_ntoa(from.sin_addr));
send(client, temp, strlen(temp), 0);
cout << "Connection from " << inet_ntoa(from.sin_addr) <<"/r/n";
closesocket(client);
closesocket(server);
WSACleanup();
return 0;
}
客户端
#include <iostream>
#include <Winsock2.h>
#pragma comment( lib, "Ws2_32.lib" )
using namespace std;
const int MY_ERROR = -1;
int main( )
{
WSADATA wsaData;
if(WSAStartup(MAKEWORD(2,2), &wsaData)!=0)
{
cout<<"Error in WSAStartup"<<endl;
return MY_ERROR;
}
SOCKET conn;
conn = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(conn == INVALID_SOCKET)
{
cout<<"Error in socket"<<endl;
return MY_ERROR;
}
sockaddr_in server;
memset(&server, 0, sizeof(server));
server.sin_family = AF_INET;
server.sin_port = htons(8080);
server.sin_addr.S_un.S_addr = inet_addr("192.168.1.99");
if(connect(conn, (sockaddr*)(&server), sizeof(server))!=0 )
{
closesocket(conn);
cout<<"Error in connect"<<endl;
return MY_ERROR;
}
closesocket(conn);
WSACleanup();
return 0;
}
博主此前对C/C++下的socket编程不太熟悉,此次完成了一个简单的server/client程序。文中给出了服务器和客户端的代码,包含初始化Windows Socket库、创建socket、绑定、监听、连接等操作,使用了TCP协议。
1782

被折叠的 条评论
为什么被折叠?



