`
myway84
  • 浏览: 203035 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
文章分类
社区版块
存档分类
最新评论

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

阅读更多
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);

}
}
分享到:
评论

相关推荐

    [Visual.Basic.2010.入门经典(第6版)].Thearon.Willi等.扫描版(1/2)

    3.4.5 字符串类型 ............................ 42 3.4.6 使用日期 ................................ 49 3.4.7 布尔类型 ................................ 54 3.5 存储变量 .............................

    PHP和MySQL WEB开发(第4版)

    4.5.1 在字符串中查找字符串:strstr()、strchr()、strrchr()和stristr() 4.5.2 查找子字符串的位置:strpos()、strrpos() 4.5.3 替换子字符串:str_replace()、substr_replace() 4.6 正则表达式的介绍 4.6.1 基础...

    PHP和MySQL Web开发第4版pdf以及源码

    4.5.1 在字符串中查找字符串:strstr()、strchr()、strrchr()和stristr() 4.5.2 查找子字符串的位置:strpos()、strrpos() 4.5.3 替换子字符串:str_replace()、substr_replace() 4.6 正则表达式的介绍 4.6.1 ...

    PHP和MySQL Web开发第4版

    4.5.1 在字符串中查找字符串:strstr()、strchr()、strrchr()和stristr() 4.5.2 查找子字符串的位置:strpos()、strrpos() 4.5.3 替换子字符串:str_replace()、substr_replace() 4.6 正则表达式的介绍 4.6.1 ...

    php网络开发完全手册

    7.3.1 字符串重复操作——str_repeat 104 7.3.2 字符串替换操作——str_replace 7.3.2 和str_ireplace 104 7.3.3 字符串分解操作——str_split 106 7.3.4 字符串单词数的计算函数—— 7.3.4 str_word_count 107 ...

    java文件上传下载的最新jar包

    例如,`FileUtils`类提供了大量静态方法来简化文件操作,如`copyFile()`用于文件之间的复制,`readFileToString()`用于将文件内容读取为字符串,`writeStringToFile()`则可以将字符串写入到文件中。这些方法极大地...

Global site tag (gtag.js) - Google Analytics