350 TCP通信程序练习2(客户端数据来自于键盘录入)
【练习2】
客户端,数据来自键盘录入,直到输入886,则发送数据结束
服务器,接收数据,写屏
(自己尝试写了一遍,报错了,以下依次是原代码cilent、server,自己的代码client、server)
---------------------------------------------
package TCPPra2;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerDemoOriginalEdition {
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(10086);
Socket s = ss.accept();
//获取输入流
InputStream is = s.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
// 在client端,写数据是一次写一个字符串,在server端能不能一次读一个字符串?
// 能,用字符流,通过转换流把字节流转成字符流
// 以上3行代码,可以简化为1行
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
ss.close();
}
}
/*
hello,tcp
see you
bye-by
Exception in thread "main" java.net.SocketException
*/
---------------------------------------------
package TCPPra2;
import java.io.*;
import java.net.Socket;
public class ClientDemoOriginalEdition {
public static void main(String[] args) throws IOException {
Socket s = new Socket("192.168.43.241", 10086);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 封装输出流对象,以便?
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String line;
while ((line = br.readLine()) != null) {
if ("886".equals(line)) {
break;
}
// OutputStream os = s.getOutputStream();
// os.write(line.getBytes());
// 上句可以一次写一个数组,如果要一次写一个字符串呢?
// ——那就封装输出流对象,使用字符流写数据
bw.write(line);
bw.newLine();
bw.flush();
}
}
}
/*
hello,tcp
see you
bye-by
886
*/
---------------------------------------------
package TCPPra2;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class ClientDemo {
public static void main(String[] args) throws IOException {
Socket s = new Socket("192.168.43.241",10086);
OutputStream os = s.getOutputStream();
Scanner sc = new Scanner(System.in);
// String data=sc.nextLine();
os.write(sc.nextLine().getBytes());
s.close();
}
}
/*
hi
*/
---------------------------------------------
package TCPPra2;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class ServerDemo {
public static void main(String[] args) throws IOException {
ServerSocket ss=new ServerSocket(10086);
Socket s = ss.accept();
InputStream is = s.getInputStream();
// byte[] bys=new byte[1024];
// int len=is.read(bys);
// String data0=new String(bys,0,len);
String data=new String(new byte[1024],0,is.read());
while (data!=null){
System.out.println("SERVER: DATA is: "+data);
}
ss.close();
}
}
/*
SERVER: DATAis:
SERVER:DATAis:
SERVER:DATAis:
*/