📄 rserver.cpp
字号:
/***************************************************************|
Author: JIURL
Email: jiurl@mail.china.com
Homepage: http://jiurl.yeah.net
/***************************************************************/
#include <winsock2.h>
#include <windows.h>
#include <stdio.h>
#include <ws2tcpip.h>
#include <conio.h>
#pragma comment(lib,"ws2_32.lib")
void RawServer();
void main()
{
WSADATA wsaData;
WSAStartup(0x0202, &wsaData);
RawServer();
WSACleanup();
}
//////////////////////////////////////////////////////////
void RawServer()
{
int nRet;
SOCKET theSocket;
theSocket = socket(AF_INET, SOCK_RAW, 255);
if (theSocket == INVALID_SOCKET)
{
printf("socket() error\n");
return;
}
SOCKADDR_IN saServer;
saServer.sin_family = AF_INET;
saServer.sin_addr.s_addr = INADDR_ANY; // Let WinSock assign address
saServer.sin_port = 0; // Use port passed from user
nRet = bind(theSocket, // Socket descriptor
(LPSOCKADDR)&saServer, // Address to bind to
sizeof(struct sockaddr) // Size of address
);
if (nRet == SOCKET_ERROR)
{
printf("bind() error\n");
closesocket(theSocket);
return;
}
///////////////////////////////////////////////////
int nLen;
nLen = sizeof(SOCKADDR);
char szBuf[1024];
nRet = gethostname(szBuf, sizeof(szBuf));
if (nRet == SOCKET_ERROR)
{
printf("gethostname() error\n");
closesocket(theSocket);
return;
}
LPHOSTENT lpHostEntry;
lpHostEntry = gethostbyname(szBuf);
printf("Server named %s addr %s \n\n",
szBuf, inet_ntoa(*(LPIN_ADDR)lpHostEntry->h_addr));
///////////////////////////////////////////////////
SOCKADDR_IN saClient;
memset(szBuf, 0, sizeof(szBuf));
nRet = recvfrom(theSocket, // Bound socket
szBuf, // Receive buffer
sizeof(szBuf), // Size of buffer in bytes
0, // Flags
(struct sockaddr*)&saClient, // Buffer to receive client address
&nLen); // Length of client address buffer
if(nRet!=SOCKET_ERROR)
{
printf("Server recv: %s\n",szBuf+20);
}
else
{
printf("recv error: %d\n",WSAGetLastError());
closesocket(theSocket);
return;
}
getch();
closesocket(theSocket);
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -