您的位置:首页 > 理论基础 > 计算机网络

通过TCP实现客户端服务端简单链接案例

2018-01-02 15:40 609 查看


package com.iotek.tcpsocket;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class TCPServer {

public static void main(String[] args) throws IOException {
//创建一个ServerSocket对象
ServerSocket serversocket=new ServerSocket(8812);
//调用accept()方法来接收客户端请求
Socket socket=serversocket.accept();
System.out.println(socket.getInetAddress().getHostAddress()+"连接成功了");
//获取socket对象输入输出流
BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

//PrintWriter可以替代BufferedWriter,实现自动刷新换行
PrintWriter pw=new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true);

String line=null;
//读取客户端传过来的数据
while((line=br.readLine())!=null){
if(line.equals("over")){
System.out.println(socket.getInetAddress().getHostAddress()+"断开了连接");
break;
}
System.out.println(line);
//bw.write(line.toUpperCase());//把大写转换成大写的字符串,传给客户端
//bw.newLine();
//bw.flush();//可能缓冲区没有写满,不会写出去,这里是强制输出

pw.println(line.toUpperCase());
}
br.close();
pw.close();
socket.close();
serversocket.close();
}

}

package com.iotek.tcpsocket;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class TCPClient {

public static void main(String[] args) throws UnknownHostException, IOException {

Socket socket=new Socket("192.168.1.3",8812);

BufferedReader br=new BufferedReader(
new InputStreamReader(System.in));

//		BufferedWriter bw=new BufferedWriter(
//				new OutputStreamWriter(socket.getOutputStream()));

PrintWriter pw=new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true);

BufferedReader reader=new BufferedReader(
new InputStreamReader(socket.getInputStream()));

while(true){
String line=br.readLine();//获取键盘所输入的字符串
//			bw.write(line);
//			bw.newLine();//加了换行以后才让服务器端知道一行结束了
//			bw.flush();
pw.println(line);

if(line.equals("over")){
System.out.println("断开连接");
break;
}
System.out.println(reader.readLine());//获取服务端传来的大写字符串
}
reader.close();
br.close();
pw.close();
socket.close();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息