C++网络编程之——简易的服务器端与客户端
2010-10-18 06:28
357 查看
服务器端:
客户端:
在客户端输入服务器端IP地址后
服务器端显示:
Press ESCAPE to teminate program
starting up tcp sever
connection from 222.210.8.222
客户端显示:
please input servername
222.210.8.222
YOUR ip is 222.210.8.222
Press any key to continue
// CSexample.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "CSexample.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // The one and only application object CWinApp theApp; using namespace std; UINT severthread(LPVOID pParam); int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { int nRetCode=0; //按下ESC键退出 cout<<"Press ESCAPE to teminate program/r/n"; //创建处理线程 AfxBeginThread(severthread,0); while(getchar()!=27); return nRetCode; } UINT severthread(LPVOID pParam) { cout<<"starting up tcp sever"<<endl<<endl; SOCKET server; //服务器端套接字 WSADATA wsadata; //用于WSAstartup填充 sockaddr_in local; //本地端口信息 int wsaret=WSAStartup(0x101,&wsadata); //WSAstartup初始化WINDOWS SOCKET API if(wsaret!=0) { return 0; } //描述本地信息 local.sin_addr.S_un.S_addr=INADDR_ANY; local.sin_family=AF_INET; local.sin_port=htons((u_short)80); //本地服务器端口号 server=socket(AF_INET,SOCK_STREAM,0); //创建套接字 if(server==INVALID_SOCKET) { return 0; } if(bind(server,(sockaddr*)&local,sizeof(local))!=0) //绑定套接字 { return 0; } if(listen(server,10)!=0) //设置监听状态 { return 0; } SOCKET client; //客户端套接字 sockaddr_in from; //客户端端口信息 int fromlen=sizeof(from); //永真循环,接收客户端连接,并发送相应信息 while(1) { char temp[512]; client=accept(server,(sockaddr*)&from ,&fromlen); sprintf(temp,"YOUR ip is %s/n",inet_ntoa(from.sin_addr)); send(client,temp,strlen(temp)+1,0); cout<<"connection from "<<inet_ntoa(from.sin_addr)<<endl<<endl; closesocket(client); } //关闭套接字 closesocket(server); //撤销WINDOWS SOCKET API WSACleanup(); return 0; }
客户端:
// CSclient2.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "CSclient2.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // The one and only application object CWinApp theApp; using namespace std; int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { int nRetCode=0; SOCKET conn; //客户端套接字 WSADATA wsadata; //用于WSAstartup填充 sockaddr_in server; //服务器端端口信息 int wsaret=WSAStartup(0x101,&wsadata); if(wsaret!=0) { return 0; } conn=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); //创建客户端套接字 if(conn==INVALID_SOCKET) { return 0; } char servername[100]; //服务器端名称或IP地址 struct hostent *hp; //服务器端信息 unsigned long addr; //服务器端IP地址 end1: //既许可输入服务器端名称,亦允许通过输入服务器IP地址来连接服务器 cout<<"please input servername "<<endl; cin>>servername; if(inet_addr(servername)==INADDR_NONE) { hp=gethostbyname(servername); } else { addr=inet_addr(servername); hp=gethostbyaddr((char*)&addr,sizeof(addr),AF_INET); } if(hp==NULL) { goto end1; closesocket(conn); return 0; } //设置欲连接服务器信息 server.sin_addr.S_un.S_addr=*((unsigned long*)hp->h_addr); server.sin_family=AF_INET; server.sin_port=htons(80); //连接服务器 if(connect(conn,(struct sockaddr*)&server,sizeof(server))) { goto end1; closesocket(conn); return 0; } char buff[512]; //连接成功,接收服务器发来信息 recv(conn,buff,512,0); cout<<buff<<endl; //关闭客户端 closesocket(conn); //撤销WINDOWS SOCKET API WSACleanup(); return nRetCode; }
在客户端输入服务器端IP地址后
服务器端显示:
Press ESCAPE to teminate program
starting up tcp sever
connection from 222.210.8.222
客户端显示:
please input servername
222.210.8.222
YOUR ip is 222.210.8.222
Press any key to continue
相关文章推荐
- Linux网络编程-客户端与服务器端异步通信
- Java网络编程:服务器端和客户端互发信息
- C#网络编程,多个客户端连接服务器端并发送消息
- LINUX 网络编程---多路复用和信号驱动I/O(王德仙)2012-04-07 客户端和服务器端编写完成,明天开始学习poll 和epoll
- {网络编程}和{多线程}应用:基于TCP协议【实现多个客户端发送文件给一个服务器端】--练习
- linux网络编程,将服务器端时间通过tcp传送到客户端
- C++服务器端+Android客户端的网络通信
- socket网络编程之一:客户端和服务器端接口函数
- Linux网络编程-客户端与服务器端通信
- Linux网络编程一步一步学-客户端和服务器端互相收发消息
- 【Clion+Pycharm 网络编程】C++实现服务端,Python实现客户端
- java网络编程 客户端和服务器端
- 网络编程--客户端与服务器端总结
- linux网络编程之socket(九):使用select函数改进客户端/服务器端程序
- 网络编程案例简易新闻客户端
- 深入理解计算机系统网络编程一节echo客户端服务器端代码的编译运行
- 最简单网络编程之客户端往服务器端送东西02
- Android网络编程之——Android登录系统模块的实现(客户端+服务器端Servlet+MySQL)
- socket网络编程之一:客户端和服务器端接口函数