实现一个简单的自定义server
这里利用的是电脑自带的Telnet客户端来实现
需要先在控制面板中启用它
找到并启用
然后进行代码编写,通过调用就Java中Socket类来实现我们的目的
package comserver240808;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class MServer {
//自定义服务器
public void creatServer() throws Exception{
//创建服务器
ServerSocket server = new ServerSocket(8899);
System.out.println("启动服务器。。。");
//阻塞监听连接过来的客户端
Socket socket = server.accept();
//获取输入输出流
OutputStream outputStream = socket.getOutputStream();
InputStream inputStream = socket.getInputStream();
String msg = "Connection successful!";
//发送数据
outputStream.write(msg.getBytes());
outputStream.flush();
//读取客户端消息
System.out.println("发送消息成功...");
}
public static void main(String[] args) {
try {
new MServer().creatServer();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
在运行上面代码的时候,打开命令提示符输入telnet (IP地址) 8899(代码中的)
然后回车,会得到这样的结果
像这样,就实现了一个简单的服务端和客户端、
接下来我们尝试简单的实现发送和接收消息的功能,先尝试一个字符的内容
package comserver240808;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class MServer {
//自定义服务器
public void creatServer() throws Exception{
//创建服务器
ServerSocket server = new ServerSocket(8899);
System.out.println("启动服务器。。。");
//阻塞监听连接过来的客户端
Socket socket = server.accept();
//获取输入输出流
OutputStream outputStream = socket.getOutputStream();
InputStream inputStream = socket.getInputStream();
String msg = "Connection successful!\r\n";
//发送数据
outputStream.write(msg.getBytes());
outputStream.flush();
//读取客户端消息
int b = inputStream.read();
System.out.println((char) b);
System.out.println("发送消息成功...");
}
public static void main(String[] args) {
try {
new MServer().creatServer();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
运行结果
看来成功了,发了一个a出去。
改进一下,令其达到可以发连续的字符,并且通过回车键换行,利用了StringBuilder连接字符,
trim()清除末尾等方法
package comserver240808;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class MServer {
//自定义服务器
public void creatServer() throws Exception{
//创建服务器
ServerSocket server = new ServerSocket(8899);
System.out.println("启动服务器。。。");
//阻塞监听连接过来的客户端
Socket socket = server.accept();
//获取输入输出流
OutputStream outputStream = socket.getOutputStream();
InputStream inputStream = socket.getInputStream();
String msg = "Connection successful!\r\n";
//发送数据
outputStream.write(msg.getBytes());
outputStream.flush();
//读取客户端消息
while (true) {
String str = readMsg(inputStream);
System.out.println("client:" + str);
}
}
//读取客户端数据
public String readMsg(InputStream inputStream)throws Exception{
StringBuilder stringBuilder = new StringBuilder();
int b = 0;
while ((b=inputStream.read())!=13){
//拼接一条聊天消息
stringBuilder.append((char) b);
}
return stringBuilder.toString().trim();
}
public static void main(String[] args) {
try {
new MServer().creatServer();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
运行即可达到想要的效果
这样就完成了一个简单的自定义server