TCP之服务端
个人理解
许多时候博客都只是给了我们代码,而没有先给我们思路和方法
这里实现的是通过IP地址和端口在浏览器以及在cmd中访问自己的服务端
先有思路后有代码
1、建立socket连接
2、创建输入输出流
3、开启while循环或线程,用输入流读取信息 防止socket连接关闭
4、实现按行读取信息
建立连接
有这两条语句就,运行之后别人就能通过IP地址和端口访问你了!
ServerSocket socket = new ServerSocket(8888);
Socket ss = socket.accept();
在没有客户端访问时,socket.accept();将会阻塞
建立通道
建立输入输出流,不关闭,进行事实对话
连接成功后可以给客户端发条消息
OutputStream outputStream = ss.getOutputStream();
InputStream inputStream = ss.getInputStream();
outputStream.write("欢迎访问服务器!".getBytes());
接收客户端信息
1、按字节客户端的消息
连接成功后需要开启线程或循环,不能让accept()断开
while (true) {
int c = inputStream.read();
System.out.print((char) c);
}
1、按行读取接收到的消息
i:把读取的字节写入字节数组输出流
ii:对换行进行处理
iii:把字节数组输出流转化为字节数组
iiii:字节数组转化为字符串,加上编码
while(truue){
int c = inputStream.read();//先读取一个字节
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while (c != '\n') {如果不是换行,就把读取的字节写入字节数组输出流
bos.write(c);
c = inputStream.read();
}
}
byte bytes[] = bos.toByteArray();//把读取的流转化为字节数组
String msg = readline(new String(bytes, "gbk"));//
客户端访问
先运行程序
1、网页访问
客户端在浏览其中输入 IP:端口
网页端会给服务器发送这样一段信息
2、telnet访问
先打开电脑中的telnet客户端
然后在cmd中运行如下
这样就能给服务器实时或者回车键发送信息了