初学关于java中 C/S架构配置
概述C/S: Client/Server 架构,即服务器/客户端架构。通过将任务合理分配到 Client 端和 Server 端,降低了系统的通讯开销,需要安装客户端才可进行管理操作。
优点:
( 1) 界面和操作可以很丰富。
( 2) 大部分数据保存在客户端,相对安全。
( 3) 大部分功能都集成在客户端, 只需从服务器下载少量数据, 因此访问
速度较快。
缺点
( 1) 升级维护工作量较大,每一个客户端都需要升级。
( 2) 用户群固定。由于程序需要安装才可以使用,因此不适合面向一些不
可知的用户。
创建服务器:
package com.bjpowernode.scoket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class MyServerSocket {
/**
* 创建服务器端
* @param args
*/
public static void main(String[] args) {
ServerSocket serverSocket = null;
Socket clientSocket = null;
BufferedReader br = null;
try {
//创建服务端套接字,并且绑定端口号
serverSocket = new ServerSocket(8080);
//开始监听网络,此时程序处于等待状态,接受客户端的消息
clientSocket = serverSocket.accept();
//接收消息
br = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
//打印消息
String temp = null;
while((temp = br.readLine()) != null){
System.out.println(temp);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
//关闭资源
if(br != null){
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(clientSocket != null){
try {
clientSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(serverSocket != null){
try {
serverSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
创建客户端:
package com.bjpowernode.scoket;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class MySocket {
/**
* 创建客户端
* @param argss
*/
public static void main(String[] args) {
Socket clientSocket = null;
PrintWriter out = null;
try {
//创建客户端套接字,绑定IP地址和端口号
clientSocket = new Socket("localhost",8080);
//创建输出流对象
out = new PrintWriter(clientSocket.getOutputStream());
//发送消息
String msg = "Hello Word";
out.print(msg);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
if(out != null){
out.close();
}
if(clientSocket != null){
try {
clientSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
工程:
运行结果: