java服务器代码_简单java服务器

[java]代码库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(1234);

}

}

694748ed64b9390909c0d88230893790.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值