socket编程(一)最简单的c/s模式

      最简单的C/S模式是经典的入门模式,也是大多数教材讲解最多的,总的来说分为下面的几个步骤

左边为 客户端模式,右边为服务器模式

服务器模式相对复杂一点,这一点是肯定的,因为服务器面对很多不同的客户端的连接。

相关函数不解释,入门级别的书本上都有,而且讲解的非常详细。

这里不多做介绍!

 

下面是服务器模式,只负责接收信息

#include <iostream>
#include <WINSOCK2.H>
#pragma comment(lib,"Ws2_32.lib")

using namespace std;

int main(int argc, char* argv[])
{
	char buff[255];
	WSADATA wsa;
	//初始化套接字库
	if ( WSAStartup( MAKEWORD(2,2) , &wsa ) )
	{
		cout<<"1!"<<endl;
	}
	//初始化套接字和本机服务器的地址
	SOCKET server_socket = socket(AF_INET , SOCK_STREAM , 0);
	
	SOCKADDR_IN serveradd;
	serveradd.sin_family = AF_INET;
	serveradd.sin_port = htons(8000);
	serveradd.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
	//绑定
	if(bind(server_socket , (SOCKADDR *)&serveradd , sizeof(serveradd)) == SOCKET_ERROR)
	{
		cout<<"2"<<endl;
		WSACleanup();
	}
	//监听端口
	if(listen(server_socket , 5) == SOCKET_ERROR)
	{
		cout<<"3"<<endl;
		WSACleanup();
	}
	
	//定义地址等待客户端的连接
	SOCKADDR_IN clientadd;
	int len = sizeof(clientadd);

	int irecv = 0 ;
	//连接
	SOCKET client_sock = accept(server_socket , (SOCKADDR *)&clientadd , &len); 
	while (1)
	{
		//循环 接受 用于测试!
	 	irecv =  recv(client_sock , buff , 255 , 0);
		if (irecv == 0 || irecv == SOCKET_ERROR  )
		{
			break;
		}
		cout<<buff<<endl;
	}

	return 0;
}


继续贴出客户端的例子

客户端只是发送数据

 

#include <iostream>
#include <WINSOCK2.H>
#pragma comment(lib,"Ws2_32.lib")

using namespace std;

int main(int argc, char* argv[])
{
	char buff[255];

	//初始化套接字库
	WSADATA wsa;
	if ( WSAStartup( MAKEWORD(2 , 2) , &wsa ) )
	{
		cout<<"WSAStartup error !"<<endl;
	}
	
	//创建套接字
	SOCKET client_socket = socket( AF_INET , SOCK_STREAM , 0 );
	if (client_socket == INVALID_SOCKET)
	{
		cout<<"创建套接字失败"<<endl;
	}
	
	//定义服务器地址
	SOCKADDR_IN server_addr;

	server_addr.sin_family = AF_INET ; 
	server_addr.sin_port = htons(8000);
	server_addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");

	//连接服务器
	int ret = connect(client_socket ,(SOCKADDR *)&server_addr , sizeof(server_addr));
	if (ret == SOCKET_ERROR )
	{
		cout<<"连接失败"<<endl;
	}
	while (1)
	{
		cin>>buff;
		send(client_socket , buff , strlen(buff)+1 , 0 );
		Sleep(1000);
	}
	return 0;
}


 

 

 

你可能感兴趣的:(编程,Stream,server,socket,服务器,测试)