该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Reader;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
/**
* 远程数据访问
* @project javaAdv_socket2010
* @package com.lcd
* @class RemoteServer.java
*
* @author
* @time 2015年5月30日 上午11:14:01
* @version V1.00
* @description (TODO 用一句话描述当前类的作用)
*
*/
public class RemoteServer {
public static void main(String[] args) throws IOException, InterruptedException {
//打开服务器端口
ServerSocket server = new ServerSocket(8888);
/*
* 判断客户端是否连接,如果accept方法执行,说明客户端连接成功,返回一个Socket套接字
* 如果没有客户端连接上来,accept方法将处于等待状态
*/
Socket socket = server.accept();
System.out.println("server already started! waitting...");
System.out.println(socket.getRemoteSocketAddress()+"client connect successful!");
/*
* 发送消息和接受消息
*/
//获取输出流
OutputStream os = socket.getOutputStream();
chat:
while (true) {
//定义要发送的消息
Scanner input = new Scanner(System.in);
//发送的消息否手工添加一个回车符:read方法以\n或\r表示读取结束
String info = input.next() + "\n";
//给客户端发送消息
os.write(info.getBytes());
/*
* 接受消息
*
* 定义输入流。从socket中获取一个输入流
* 以为是字符读取,为了支持汉子,将字节流转换成字符流
* 为了提高效率,将字符流使用字符缓冲流进行包装
*/
InputStream is = socket.getInputStream();
Reader reader = new InputStreamReader(is);
BufferedReader br = new BufferedReader(reader);
//使用readline方法读取对方发送的数据
String msg = br.readLine();
//将数据打印到控制台
System.out.println(DateUtil.getCtime()+"client send:"+msg);
//如果输入exit,表示结束聊天
if ("exit".equalsIgnoreCase(msg)) {
System.out.println("chat exited!");
break;
}
}
socket.close();
server.close();
}
}