windows网络编程Winsock(二)一个简单的阻塞服务器
来源:互联网 发布:ubuntu 开启图形界面 编辑:程序博客网 时间:2024/05/16 01:00
下面是一个简单阻塞模式的服务器,是一个单对单的服务器如果你想实现多客户端的服务器那就要用到其他的i/o模型了以后再说了!
#include <cstdlib>
#include <iostream>
#include <Winsock2.h>
#pragma comment(lib,"libws2_32.lib")
//缓冲区大小
#define DATA_BUFSIZE 4096
using namespace std;
const unsigned int nPort = 5151;
int main(int argc, char *argv[])
{
WSADATA wsaData;
SOCKET Listen;
SOCKET Accept;
char Buffer[DATA_BUFSIZE];
//初始化Winsock版本2.2
int ret = WSAStartup(MAKEWORD(2,2),&wsaData);
if(ret != 0)
{
//注意:因为Winsock没有加载,所以我们不能使用WSAGetLastError
//来确定导致故障的特定错误。我们只能根据返回状态判断
cout<<"WSAStartup failed with error "<<ret<<endl;
WSACleanup();
return 0;
}
//这里就是我们创建socket要连接或者监听代码了
Listen = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
//设置服务器的SOCKADDR_IN
SOCKADDR_IN ServerDdr;
ServerDdr.sin_family = AF_INET;
ServerDdr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
ServerDdr.sin_port = htons(nPort);
//绑定监听socket
int nRet = bind(Listen,(LPSOCKADDR)&ServerDdr,sizeof(ServerDdr));
if(nRet == SOCKET_ERROR)
{
cout<<"bind error!"<<endl;
closesocket(Listen);
goto ERROR1;
}
//接受 ,最后连个参数可以为NULL,例如
//Accept = accept(Listen,NULL,NULL);
//如果你想要获取客户端的ip就要像下面
SOCKADDR_IN AcceptAddr;
int AcceptAddrLen;
Accept = accept(Listen,(LPSOCKADDR)&AcceptAddr,&AcceptAddrLen);
//打印客户端的ip和端口号
cout<<"ip address:"<<inet_ntoa(AcceptAddr.sin_addr)<<endl;
cout<<"Port is:"<<ntohs(AcceptAddr.sin_port)<<endl;
nRet = 0;
while(1)
{
//接收数据
nRet = recv(Accept,Buffer,DATA_BUFSIZE,0);
if(nRet == SOCKET_ERROR )
{
cout<<"recv error!"<<endl;
closesocket(Accept);
closesocket(Listen);
goto ERROR1;
}
}
closesocket(Accept);
closesocket(Listen);
ERROR1:
//如果程序结束调用 WSACleanup
WSACleanup();
system("PAUSE");
return EXIT_SUCCESS;
}
- windows网络编程Winsock(二)一个简单的阻塞服务器
- windows网络编程之Winsock非阻塞select模式服务器
- windows网络编程之Winsock(三)非阻塞select模式服务器
- windows网络编程之 (三) - Winsock非阻塞select模式服务器
- Windows的网络编程-之一-WinSock基础
- Windows的网络编程-之一-WinSock基础
- 为初学者写的Winsock编程--一个简单的TCP服务器
- winsock编程(二)
- 使用TCP+winsock写的一个简单服务器程序
- Python 网络编程---简单的服务器与客户端实现---阻塞式编写
- Windows sockets 网络编程(二) — 阻塞模式开发
- Windows网络编程之WinSock编程基础
- 使用TCP+winsock写的一个简单服务器程序(转)
- Windows网络编程之(二)Socket通信非阻塞模式Select(TCP和UDP)
- winSock网络编程-UDP协议的简单示例(P)
- Windows网络编程:winsock文件传输范例
- 网络编程 笔记(二) 基于 Windows简单通信
- 网络编程 笔记(二) 基于 Windows简单通信
- Hibernate 快速入门
- Jdeveloper 10g开发体验之二
- 浅析VC与matlab接口编程
- MD5数据加密
- 极致的个人影音享受-HDTV
- windows网络编程Winsock(二)一个简单的阻塞服务器
- 别往伤口上洒盐
- FSD-Senior Software Engineer-NM
- 对 Object 类中方法的一些简单认识
- 在电脑上欣赏次CD音乐-APE
- FSD-Test Engineer-IPTV
- hold on
- Blog运用感想
- Asp_Net页面输出到EXCE