简单服务器的实现

服务器的工作是接收并读取客户端发来的消息,以及对相关信息的处理(如对用户名,密码等的处理),再返还给客户端
对于简单的服务器端的实现,我觉得有两个重要的地方,一是创建ServerSocket对象,将指定的端口打开:
//建立绑定在指定端口上的服务器对象
ServerSocket server = new ServerSocket(port);
二是对连接对象发送来的消息的读取。
附上一个简单服务器的实现的代码:

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class MainUI {

//创建简单服务器
public void createUI(int port){
try {
//建立绑定在指定端口上的服务器对象
ServerSocket server = new ServerSocket(port);
System.out.println("服务器创建成功!"+port);

while(true){//进入循环状态
//让服务器进入等待状态
Socket client = server.accept();
Process(client);
}


} catch (IOException e) {
e.printStackTrace();
}
}

//处理连接对象
private void Process(Socket client) throws IOException {

//从连接对象上得到输入输出流对象
OutputStream out = client.getOutputStream();
InputStream ins = client.getInputStream();
String ss = "欢迎进入聊天室";

//取得组成这个字符串的字节
byte[] data = ss.getBytes();
//用输出对象发送
out.write(data);
//强制输出
out.flush();
//调用读取字符串的方法
String inputs = readString(ins);
while(!inputs.equals("bye")){
System.out.println("客户机说:"+inputs);
ss = "服务器收到:"+inputs+"\r\n";
//取得组成字符串的字节
data = ss.getBytes();
//用输出对象发送
out.write(data);
//强制输出
out.flush();
//读取下一个
inputs = readString(ins);
}

out.write(data);
//强制输出
out.flush();
//关闭与客户机的连接
out.close();

}

//从输入流对象中读取字节,拼成一个字符串返回
private String readString(InputStream ins) throws IOException {
//创建一个字符缓冲对象
StringBuffer stb = new StringBuffer();
char c = 0;
while(c!=13){
//读取发送来的信息
int i = ins.read();
//强制类型转换
c = (char)i;
//将数据读入缓冲区
stb.append(c);
}
//将得到的字节转化为字符
String inputs = stb.toString().trim();
return inputs;
}


//主函数
public static void main(String[] args) {
MainUI mu = new MainUI();
mu.createUI(9080);
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值