原始套接字(服务器端)
来源:互联网 发布:查看php编译安装参数 编辑:程序博客网 时间:2024/04/29 03:29
服务器端线程处理函数(简单的只支持单client) :
UINT ServerFunc( LPVOID pParam );
CWinApp theApp;
using namespace std;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
...{
int nRetCode = 0;
cout<<"Hello, Welcome to socket"<<endl;
AfxBeginThread(ServerFunc,0,0);
while(_getch()!=27);
return nRetCode;
}
UINT ServerFunc( LPVOID pParam )
...{
cout<<"Here is Thread"<<endl;
//WSAStartup
WSADATA wsaData;
int ret = WSAStartup(0x101,&wsaData);
if(ret!=0)
...{
return 1;
}
//socket
SOCKET server = socket(AF_INET,SOCK_STREAM,0);
if(server==INVALID_SOCKET)
...{
return 1;
}
//bind
struct sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons((u_short)20248);
server_addr.sin_addr.s_addr = INADDR_ANY;
ret = bind(server,(sockaddr*)&server_addr,sizeof(server_addr));
if(ret!=0)
...{
return 1;
}
//listen
ret = listen(server,10);
if(ret!=0)
...{
return 1;
}
SOCKET client;
struct sockaddr_in client_addr;
int client_len = sizeof(client_addr);//这个参数一定要有初值,否则在调用accept时会出错
while(TRUE)
...{
char temp[512];
//accept
client = accept(server,(sockaddr*)&client_addr,&client_len);
sprintf(temp,"Connect from %s",inet_ntoa(client_addr.sin_addr));
cout<<temp<<endl;
sprintf(temp,"You IP Addr is %s",inet_ntoa(client_addr.sin_addr));
send(client,temp,strlen(temp),0);
closesocket(client);
}
closesocket(server);
WSACleanup();
return 0;
}
CWinApp theApp;
using namespace std;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
...{
int nRetCode = 0;
cout<<"Hello, Welcome to socket"<<endl;
AfxBeginThread(ServerFunc,0,0);
while(_getch()!=27);
return nRetCode;
}
UINT ServerFunc( LPVOID pParam )
...{
cout<<"Here is Thread"<<endl;
//WSAStartup
WSADATA wsaData;
int ret = WSAStartup(0x101,&wsaData);
if(ret!=0)
...{
return 1;
}
//socket
SOCKET server = socket(AF_INET,SOCK_STREAM,0);
if(server==INVALID_SOCKET)
...{
return 1;
}
//bind
struct sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons((u_short)20248);
server_addr.sin_addr.s_addr = INADDR_ANY;
ret = bind(server,(sockaddr*)&server_addr,sizeof(server_addr));
if(ret!=0)
...{
return 1;
}
//listen
ret = listen(server,10);
if(ret!=0)
...{
return 1;
}
SOCKET client;
struct sockaddr_in client_addr;
int client_len = sizeof(client_addr);//这个参数一定要有初值,否则在调用accept时会出错
while(TRUE)
...{
char temp[512];
//accept
client = accept(server,(sockaddr*)&client_addr,&client_len);
sprintf(temp,"Connect from %s",inet_ntoa(client_addr.sin_addr));
cout<<temp<<endl;
sprintf(temp,"You IP Addr is %s",inet_ntoa(client_addr.sin_addr));
send(client,temp,strlen(temp),0);
closesocket(client);
}
closesocket(server);
WSACleanup();
return 0;
}
- 原始套接字(服务器端)
- 原始套接字类
- 原始套接字
- 学习--原始套接字
- 原始套接字
- 原始套接字发包
- 原始套接字 IP_HDRINCL
- Linux--原始套接字
- 原始套接字
- 原始套接字
- 原始套接字
- 原始套接字
- 原始套接字
- 原始套接字SOCK_RAW
- 原始套接字
- 原始套接字
- 原始套接字实现
- 原始套接字SOCK_RAW
- 绑定dropdownlist
- Spring配置事务在DAO层和业务逻辑层
- 昨天终于签约网络中心了
- 数据库设计规范
- 今天研究了一下有趣的东东
- 原始套接字(服务器端)
- Ajax的三种形式(开源项目)
- 解决系统蓝屏问题
- 删除SQL数据库中事务日志方法
- 满大街跑的都是月薪上万的小程序员
- Tomcat配置技巧Top 10
- AJAX in Action
- 发布C#(Winform)datagridview 扩展控件
- 搭建svn+apache+trac平台(二)-Trac权限管理