简单的客户/服务器程序(基于windows Socket API)
来源:互联网 发布:淘宝好评语通用 编辑:程序博客网 时间:2024/05/22 00:27
//服务器端
#include<stdio.h>
#include< winsock2.h>
#include<windows.h>
BOOL InitSock();//加载winsock第一个版本进行版本协商
int main()
{
system("color 4f");
InitSock();//加载winsock第一个版本进行版本协商
//创建套接字
SOCKET m_SrvSocket=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN m_SrvAddr;
m_SrvAddr.sin_addr .S_un .S_addr =htonl(INADDR_ANY);
m_SrvAddr.sin_family =AF_INET;
m_SrvAddr.sin_port =htons(1024);
bind(m_SrvSocket,(SOCKADDR*)&m_SrvAddr,sizeof(SOCKADDR));//绑定端口号
if(SOCKET_ERROR==listen(m_SrvSocket,10))//监听客户端的请求
{
::MessageBox(NULL,"监听失败","failed",0);
closesocket(m_SrvSocket);
WSACleanup();
return 0;
}
SOCKADDR_IN m_ClientAddr;
int len=sizeof(SOCKADDR);
char Buf[200];
char Recv[200];
char SendBuf[200];
//SOCKET connect=accept(m_SrvSocket,(SOCKADDR*)&m_ClientAddr,&len);
printf("我是服务器,开始聊天.../n");
SOCKET connect=accept(m_SrvSocket,(SOCKADDR*)&m_ClientAddr,&len);//与客户端建立连接
if(connect== INVALID_SOCKET )
{
::MessageBox(NULL,"连接失败","ERROR",0);
closesocket(m_SrvSocket);
WSACleanup();
return 0;
}
//closesocket(connect);
while(1)
{
recv(connect,Recv,200,0);
//if('q'==Recv[0])
if(!strcmp("quit",Recv))
{
sendto(m_SrvSocket,"quit",strlen("quit")+1,0,(SOCKADDR*)&m_ClientAddr,len);
printf("Chat end!/n");
break;
}
sprintf(Buf,"%s say : %s",inet_ntoa(m_ClientAddr.sin_addr),Recv);
printf("%s/n",Buf);
gets(SendBuf);
send(connect,SendBuf,strlen(Buf)+1,0);
}
closesocket(connect);
closesocket(m_SrvSocket);
WSACleanup();
return 0;
}
BOOL InitSock()
{
//加载winsock第一个版本进行版本协商
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
return false;
}
/* Confirm that the WinSock DLL supports 2.2.*/
/* Note that if the DLL supports versions greater */
/* than 2.2 in addition to 2.2, it will still return */
/* 2.2 in wVersion since that is the version we */
/* requested. */
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
WSACleanup( );
return false;
}
/* The WinSock DLL is acceptable. Proceed. */
return true;
}
- 简单的客户/服务器程序(基于windows Socket API)
- 基于Windows API的Socket程序技术
- 一个简单的客户-服务器的Socket通信程序
- linux网络编程之socket(三):最简单的回射客户/服务器程序
- Java Socket编程 - 基于TCP方式的客户服务器聊天程序
- linux网络编程之socket(三):最简单的回射客户/服务器程序、time_wait 状态
- linux网络编程之socket(三):最简单的回射客户/服务器程序、time_wait 状态
- linux网络编程之socket(三):最简单的回射客户/服务器程序、time_wait 状态
- linux网络编程之socket(三):最简单的回射客户/服务器程序、time_wait 状态
- linux网络编程之socket(三):最简单的回射客户/服务器程序、time_wait 状态
- 【Unix 网络编程】TCP 客户/服务器简单 Socket 程序
- 【Unix 网络编程】UDP 客户/服务器简单 Socket 程序
- linux网络编程之socket:最简单的回射客户/服务器程序、time_wait 状态
- Socket网络程序设计(1) ———— 基于TCP协议的客户-服务器socket实例
- Socket网络程序设计(2) ———— 基于UDP协议的客户-服务器socket实例
- 基于C++简单Windows API的socket编程(阻塞模式)
- 基于Windows API的Socket程序开发技术研究(一)广播
- 简单的服务器和客户程序
- 3333
- SendMessage 和 PostMessage
- 替换GINA.DLL实现自己的登录界面
- MyEclipse6.5汉化
- 个人时间管理之一
- 简单的客户/服务器程序(基于windows Socket API)
- 愿与大家交朋友
- DB2性能测试监控的方法
- VC6.0 SetWindowPos()
- Google(谷歌)还不如一个妓女
- el表达式
- (转)无法向会话状态服务器发出会话状态请求
- 抽象方法与接口的区分
- struts2学习笔记1