你的代码我测试了,基本是没有问题的,但是感觉很乱,我重新给你加上了时间,并且加上了注释,个别部分更改了一下,请对照你自己的代码看一下
服务端代码- package com.itheima;
- //服务器端:
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.io.OutputStreamWriter;
- import java.net.ServerSocket;
- import java.net.Socket;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- public class TcpServer {
- public static void main(String[] args) throws IOException {
- FileWriter fw = new FileWriter("F:\\123\\sc.txt", true);
- ServerSocket server = new ServerSocket(11111);
- Socket cli = server.accept();//接收客户端
-
- Date d = new Date();
- SimpleDateFormat f = new SimpleDateFormat();
- String s = f.format(d);
- String ip = cli.getLocalAddress().getHostAddress();
- System.out.println("服务器端接收到的客户端IP:" + ip);
- fw.write(s+"--服务器端接收到的客户端IP:" + ip + "\r\n");
- fw.flush();
- InputStream in = cli.getInputStream();//客户端的输入流
- BufferedReader BufIn = new BufferedReader(new InputStreamReader(in));//字符流缓冲区
-
- OutputStream out = cli.getOutputStream();//客户端的输出流
- BufferedWriter bufOut = new BufferedWriter(new OutputStreamWriter(out));//字符流缓冲区
-
- //打印从客户端发来的信息并写入到文件
- String line = null;
- while ((line = BufIn.readLine()) != null) {
- System.out.println(line);
- fw.write("server-re:" + line + "\r\n");
- fw.flush();
- line = line.toUpperCase();
- bufOut.write("你好客户端,信息已收到"+ "\r\n");//给客户端的回执
- bufOut.newLine();
- bufOut.flush();
- }
- cli.close();
- }
- }
复制代码 客户端代码- package com.itheima;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.io.OutputStreamWriter;
- import java.net.Socket;
- import java.net.UnknownHostException;
- public class TcpClient {
- public static void main(String[] args) throws UnknownHostException, IOException{
- FileWriter fw = new FileWriter("F:\\123\\sc.txt",true);
- Socket client = new Socket("127.0.0.1",11111);//创建客户端
- /*
- * 发数据
- */
- OutputStream out = client.getOutputStream();//获取输出流
- BufferedReader buf =new BufferedReader(new InputStreamReader(System.in));//读取键盘对象
- BufferedWriter BuOut =new BufferedWriter(new OutputStreamWriter(out));//输出流
- InputStream in = client.getInputStream();
- BufferedReader BufR = new BufferedReader(new InputStreamReader(in));//输入流
-
- //读取键盘录入的内容,并写入客户端
- String line = null;
- while((line=buf.readLine())!=null){
- if("886".equalsIgnoreCase(line))
- break;
- BuOut.write(line);
- BuOut.newLine();
- BuOut.flush();
- fw.write("clint-send:"+line+"\r\n");
- fw.flush();
-
- String str= BufR.readLine();//接收服务端的回执
- System.out.println(str);
- fw.write("clint-re:"+str+"\r\n");
- fw.flush();
- }
- buf.close();
- client.close();
- }
- }
复制代码 服务端console
客户端console
123文件夹内sc.txt文件内容
|