1..1.3.3服务器读取客户端的字符串的实现


import java.io.InputStream;
import java.io.OutputStream;
import java.net.*;

public class ChatServer {

public void setUpServer(int port)
{
try
{
ServerSocket server=new ServerSocket(port);
System.out.println("服务器创建成功"+port);
//让服务器进入等待状态:阻塞状态
//当有客户端连接上时,等待方法就会返回,返回一个代表与客户端连接的对象
while(true)
{
Socket client=server.accept();
System.out.println("正在有客户端访问"+client.getRemoteSocketAddress());
//调用处理连接对象的方法去处理连接对象
processChat(client);
//从连接对象上得到输入输出流对象
// OutputStream out=client.getOutputStream();
// InputStream ins=client.getInputStream();
//
// String s="你好,欢迎来到javake\r\n";
//
// byte[] data=s.getBytes();//获取这个字符串的字节
// out.write(data);//用输出对象发送数据
// out.flush();//强制输出
// int in=0;
// while(in!=13)
// {
// in=ins.read();
// System.out.println("读到的一个是"+in);
// }
// System.out.println("客户端按了回车,退出");
//
// client.close();//关闭与客户端的连接
}
}catch(Exception e)
{
e.printStackTrace();
}
}

/**
* 处理连接对象,读取客户端发来的字符串,回送给客户端
*
*
*/

private void processChat(Socket client) throws Exception
{
//从连接对象上得到输入输出流对象
OutputStream out=client.getOutputStream();
InputStream ins=client.getInputStream();

String s="你好,欢迎来到服务器javake\r\n";

byte[] data=s.getBytes();//获取这个字符串的字节
out.write(data);//用输出对象发送数据
out.flush();//强制输出
//调用读取字符串的方法,从输入流中读取一个字符串
String inputS=readString(ins);
int in=0;
while(!inputS.equals("bye"))
{
System.out.println(" 客户端说"+inputS);
s="服务器收到"+inputS+"\r\n";
data=s.getBytes();//取得组成这个字符串的字节数组
out.write(data);
out.flush();

inputS=readString(ins);//读取客户端的下一次输入
}
s="你好,欢迎再来 \r\n";
data=s.getBytes();
out.write(data);
out.flush();

client.close();//关闭与客户端的连接
}

/**
  *
  * 从输入流对象中读取字节,拼成一个字符串返回
  * 如果读到一个字符值为13,则认为以前的是一个字符串
  * ins:输入 流对象
  * return:从流上(客户端发来的)读到字符串
  */
private String readString(InputStream ins) throws Exception
{
//创建一个字符串缓冲区
StringBuffer stb=new StringBuffer();
char c=0;
while(c!=13)
{
int i=ins.read();//读取客户端发来的一个字节
c=(char)i;//将输入的字节转换为一个Char
stb.append(c);//将读取到的一个字符加到字符串缓冲区中


}
//将读到的字节数组转换为字符串,并调用trim去掉尾部的空格
String inputS=stb.toString().trim();
return inputS;
}



public static void main(String[] args)
{
ChatServer cs=new ChatServer();
cs.setUpServer(9090);

}
}

转载于:https://my.oschina.net/u/125259/blog/310278

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值