第一个服务器/客户端模型(非多线程)
来源:互联网 发布:软件 渠道分销 提成 编辑:程序博客网 时间:2024/05/21 10:30
服务器:
#include "stdafx.h"#include <iostream>#include "winsock2.h"#pragma comment (lib, "ws2_32.lib")int _tmain(int argc, _TCHAR* argv[]){WSADATA wsaData;SOCKET sockfd,sockfd1;if(WSAStartup(MAKEWORD(2,2),&wsaData)<0){printf("WSAStartup failed\n");return 1;} else { printf("WSAStartup successed!\n"); } sockfd=socket(AF_INET,SOCK_STREAM,0); if(sockfd==SOCKET_ERROR) { printf("套接口创建失败!"); WSACleanup(); return 1; } else { printf("a new socket has been created!\n"); printf("the socket id is %d\n",sockfd); } struct sockaddr_in addr; int addr_len=sizeof(struct sockaddr_in); addr.sin_family=AF_INET; addr.sin_port=htons(8888); addr.sin_addr.s_addr=INADDR_ANY; if(bind(sockfd,(SOCKADDR *)&addr, sizeof(addr))<0) { printf("bind error!"); return 1; } else { printf("bind ok!"); } listen(sockfd,5); /*SOCKET TempSock=SOCKET_ERROR; while(TempSock==SOCKET_ERROR) { std::cout<<"服务器:正在等待来自客户机的连接...\r\n"; TempSock=accept(sockfd,NULL,NULL); } sockfd=TempSock; std::cout<<"服务器:有客户机到达!\r\n\r\n";*/ int len=sizeof(addr); sockfd1=accept(sockfd,(SOCKADDR*)&addr,&len); char *szMessage="服务器说:有朋自远方来,不亦悦乎。\r\n"; send(sockfd1,szMessage,strlen(szMessage),0); shutdown(sockfd,SD_SEND); closesocket(sockfd); WSACleanup(); system("PAUSE"); return 0;}
客户机:
#include <iostream>#include "winsock2.h"#pragma comment (lib, "ws2_32.lib")int _tmain(int argc, _TCHAR* argv[]){WSADATA wsaData;SOCKET sockfd;if(WSAStartup(MAKEWORD(2,2),&wsaData)<0){printf("WSAStartup failed\n");return 1;} else printf("WSAStartup successed!\n"); sockfd=socket(AF_INET,SOCK_STREAM,0); if(sockfd==SOCKET_ERROR) { printf("套接口创建失败!"); WSACleanup(); return 1; } else { printf("a new socket has been created!\n"); printf("the socket id is %d\n",sockfd); } struct sockaddr_in addr; int addr_len=sizeof(struct sockaddr_in); addr.sin_family=AF_INET; addr.sin_port=htons(8888); addr.sin_addr.s_addr=inet_addr("127.0.0.1"); printf("the ip address of the server is: %s\n",inet_ntoa(addr.sin_addr)); if(connect(sockfd,(SOCKADDR *)&addr, sizeof(addr))<0) { printf("connect error!\n"); return 1; } else { printf("connected ok!\n"); } char buffer[1024]; memset(buffer, 0,1023); int inDataLength=recv(sockfd, buffer,1024,0); std::cout<<buffer; shutdown(sockfd,SD_SEND); closesocket(sockfd); WSACleanup(); return 0;}
阅读全文
0 0
- 第一个服务器/客户端模型(非多线程)
- 多线程编程模型之服务器/客户端模型
- 非阻塞socket对应的多线程服务器的实现---一个服务器如何与多个客户端进行通信?
- http servlet服务器和android客户端(二)第一个android客户端
- 多线程服务器(一个服务器处理多个客户端,端口复
- 服务器模型——从单线程阻塞到多线程非阻塞(上)
- 服务器模型——从单线程阻塞到多线程非阻塞(上)
- http servlet服务器和android客户端(一)第一个servlet
- (二)用多线程管理TCP多个客户端连接服务器
- 多线程实现服务器与多个客户端通信
- 利用多线程编写多个客户端向服务器并发数据
- CXF入门教程(2) -- 第一个客户端
- CXF入门教程(2) -- 第一个客户端
- CXF入门教程(2) -- 第一个客户端
- 客户端-服务器编程模型
- 客户端-服务器编程模型
- “服务器-客户端”模型网络程序设计
- 客户端-服务器-代理模型
- js之apply call使用
- PAT1014~~~
- 字符串(1)
- C++新式转型之reinterpret_cast
- Android开发知识概要
- 第一个服务器/客户端模型(非多线程)
- 我的职业生涯有贵人相助--小强老师
- 爬楼梯
- 1046. Shortest Distance 解析
- 2017.07.10-0711 没写日记
- STL之配接器
- SQL中的借书经典案例
- 概率论——随机变量的数字特征
- MFC的映射方式MM_ANISOTROPIC