夜光 带你走进 Java基础编程实战(十九 网络编程)
夜光序言:
嗯,如果有天我离开了,
不是你弄丢了我,
不是我走丢了,
而是我终于有勇气离开你了。
你好好保重身体,再见
正文:
package com.Genius.TcpIp;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
/*夜光:我目前做项目,主要还是涉及的通讯这一块
主要就是掌握网络编程*/
public class Demo01 {
//Tcp协议使用重发技术和拥塞机制
//向应用程序提供了一个可靠的通信连接
// 可以使应用程序自动去适应网络上的各种变化
public static void main(String[] args) {
try{
Server server = new Server(8080); //夜光:传入端口号实例化对象
}catch(Exception e){
System.out.println("测试服务器监听出错"+e.getMessage());
}
}
}
class Server{ //夜光:Socket服务器端
private int port; // 端口
public Server(int port)
{
this.port = port;
start();
}
public String infoUpperCase(String line)
{
return line.toUpperCase();
}
private void start() { //启动服务器端
// 网络编程~~
try{
//根据端口创建服务器端Socket对象
ServerSocket serverSocket =
new ServerSocket(port);
//显示连接信息
System.out.println("服务器端已经open,监听端口号为:"+port);
System.out.println("正在等待客户端连接~~~");
//夜光:挂起等待客户的请求~~
Socket socketAccept =
serverSocket.accept();
BufferedReader in = new BufferedReader(new
InputStreamReader(socketAccept.getInputStream()));
//以上获取客户端的数据流
PrintWriter out = new PrintWriter(
socketAccept.getOutputStream(),
true);
out.println("服务器连接成功~~~~~");
//夜光:向客户发送连接信息~~
out.println("输入quit断开与服务器的连接~~");
boolean done = false;
while(!done){
String line = in.readLine();
//夜光:读取客户端每行的内容
if(line == null){
done = true;
}else{
//夜光:显示客户端发送的内容
System.out.println("来自客户端的消息:"+line);
//夜光:信息处理
String message = infoUpperCase(line);
//夜光:向客户端发送信息
out.println("来自服务器端的信息:"+message);
if(line.trim().equals("quit")) //退出判断
done = true;
}
}
socketAccept.close();
}catch(Exception e){
System.out.println("启动服务器端出现错误"+e.getMessage());
}
}
}