C/S分布式模式,是计算机用语。C是指Client,S是指Server。C/S模式就是指客户端/服务器模式。是计算机软件协同工作的一种模式。由于Web浏览器的兴起,B/S模式逐步取代了C/S模式,被更广泛地应用。
根据客户/服务器(Client/Server简记为C/S)体系结构的概念,至少用两台计算机来分别充当客户机和服务器角色。
C/S服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或SQL Server。客户端需要安装专用的客户端软件。
扩展资料:
C\S客户端优点:
1、C/S功能强大,可以减轻服务器端压力,如果用户的需求特别复杂,用C/S。
2、C/S程序可以更加注重流程,可以对权限多层次校验,对系统运行速度可以较少考虑。
3、C/S一般建立在专用的网络上,小范围里的网络环境,局域网之间再通过专门服务器提供连接和数据交换服务。
4、C/S一般面向相对固定的用户群,对信息安全的控制能力很强.一般高度机密的信息系统采用C/S结构适宜.可以通过B/S发布部分可公开信息。
由于客户端IP被写入程序,所以在不动源代码的情况下不能更改,只好从服务器端想办法。有几个方式可以实现:
一、服务器接入路由器,由路由器来连接不同网段,在其内设置虚拟专网。
二、服务器安装两块网卡。
三、你就不会再弄台计算机做以前IP地址的服务器啊~
四、实在不行,你就直接在客户机上安装虚拟服务器好了。
以上各具体部骤恕我不详细说明,够写一本书了……自己上网搜吧。
//这是服务器端#include<stdio.h>
#include<winsock2.h>
#include<string.h>
#include<conio.h>
#pragma comment(lib,"Ws2_32.lib")
SOCKET server
SOCKET client
WSADATA WSAData
int WSAreturn
sockaddr_in local
sockaddr_in from
int fromlen = sizeof(from)
char information[50]
char welcome[]="欢迎您登陆YYJW主机!\n"
char receive[256]
char ip[]="您的IP是:"
char chat[256]
char c
int i=0
bool cansend=false
int GetIp()
{
WSAreturn = WSAStartup(0x101,&WSAData)
if(WSAreturn)
{
printf("发生一个未知错误!\n")
return 0
}
local.sin_family = AF_INET
local.sin_addr.s_addr = INADDR_ANY
local.sin_port = htons((u_short)23)
server = socket(AF_INET,SOCK_DGRAM,0)
if(server==INVALID_SOCKET )
{
printf("无法创建套接字!\n")
return 0
}
if(bind(server,(sockaddr *)&local,sizeof(local))!=0)
{
printf("无法绑定套接字!\n")
return 0
}
//if(listen(server,5)!=0)
//{
//printf("无法监听端口!\n")
//return 0
//}
while(true)
{
printf("正在等待用户连接...\n")
//client = accept(server,(struct sockaddr *)&from,&fromlen)
strcpy(information,inet_ntoa(from.sin_addr))
strcat(welcome,information)
printf("接受来自%s的连接...\n",inet_ntoa(from.sin_addr))
printf("正在发送欢迎消息...\n")
send(client,welcome,strlen(welcome),0)
//send(client,ip,strlen(ip),0)
//send(client,information,strlen(information),0)
printf("欢迎消息信息已经成功发送至客户端!\n")
while(1)
{
if(!cansend)
{
printf("正在等待对方发来消息...\n")
cansend=false
recv(client,receive,sizeof(receive),0)
printf("*********接受到的消息***********\n")
printf("%s\n",receive)
printf("**************结束**************\n")
cansend=true
}
else
{
printf("请输入下一条消息:")
scanf("%s\0",&chat)
send(client,chat,strlen(chat),0)
printf("\n已经成功发送出信息!\n")
cansend=false
}
}
closesocket(client)
}
closesocket(server)
WSACleanup()
return 1
}
void main()
{
int ok
ok = GetIp()
if(ok==0)
printf("无法完成请求!\n")
getch()
}
//这是客户端
#include<stdio.h>
#include<winsock2.h>
#include<string.h>
#include<conio.h>
#pragma comment(lib,"Ws2_32.lib")
SOCKET client
WSADATA WSAData
int WSAreturn
sockaddr_in to
char information[256]
char welcome[]="我已经登陆到你的主机!\n"
char receive[256]
char chatto[256]
char servername[256]
char chatfrom[256]
char c
long result
bool cansend=true
int connection()
{
WSAreturn = WSAStartup(0x101,&WSAData)
if(WSAreturn)
{
printf("发生一个未知错误!\n")
return 0
}
client = socket(AF_INET,SOCK_DGRAM,0)
to.sin_family = AF_INET
to.sin_port = htons(23)
while(true)
{
printf("请输入要登陆的IP:")
scanf("%s",&servername)
to.sin_addr.s_addr = inet_addr(servername)
printf("正在连接...\n")
result = connect(client,(struct sockaddr *)&to,sizeof(to))
if(SOCKET_ERROR==result)
{
// 连接失败
printf("对不起,无法连接到目标主机!\n")
WSACleanup()
return 0
}
else
{
cansend=false
recv(client,receive,sizeof(receive),0)
printf("*******欢迎消息消息*******\n")
printf("%s\n",receive)
printf("***********结束*********\n")
cansend=true
while(1)
{
if(cansend)
{
printf("请输入下一条信息:")
scanf("%s\0",&chatto)
send(client,chatto,strlen(chatto),0)
printf("\n已经成功发送信息!\n")
cansend=false
}
else
{
printf("正在等待对方发来消息...\n")
cansend=false
recv(client,chatfrom,sizeof(chatfrom),0)
printf("*******接收到的消息*******\n")
printf("%s\n",chatfrom)
printf("***********结束*********\n")
cansend=true
}
}
}
}
closesocket(client)
WSACleanup()
return 1
}
void main()
{
connection()
getch()
}
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)