TCP通信_接收端给出反馈
要求如下 客户端:发送数据,接收服务器反馈 服务器:接收数据,给出反馈
TCP通信_接收端给出反馈的练习
xxxxxxxxxx
package ch22;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
//如何运行:先运行"a_11_2测试_接收"再运行"a_11_1测试_发送"
public class a_11_1测试_发送 {
public static void main(String[] args) throws IOException {
//创建发送端的Socket对象(Socket)
Socket s = new Socket("10.99.20.3",11111);
//获取输出流,写数据
OutputStream os = s.getOutputStream();
os.write("hello,tcp,你好呀".getBytes());
//接收接收端的反馈
InputStream is = s.getInputStream();//字节输入流
byte[] bys = new byte[1024];
int len = is.read(bys);
String data = new String(bys,0,len);//把字节输入流读到控制台
System.out.println("接收端的反馈是:"+data);
//释放资源
is.close();
os.close();
s.close();
//提示:其实不需要释放3个,只需要释放掉s就能间接释放掉is和os,因为is和os是根据s创建的。当然也可以像上面那样把3个都释放掉
}
}
xxxxxxxxxx
package ch22;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
//如何运行:先运行"a_11_2测试_接收"再运行"a_11_1测试_发送"
public class a_11_2测试_接收 {
public static void main(String[] args) throws IOException {
//创建接收端的Socket对象(ServerSocket)
ServerSocket ss = new ServerSocket(11111);
//监听发送端的连接,返回一个Socket对象
Socket s = ss.accept();
//获取输入流,读数据,并把数据显示在控制台
InputStream is = s.getInputStream();
//读数据
byte[] bys = new byte[1024];
int len = is.read(bys);//把数据读到字节数组中
String data = new String(bys,0,len);//把数据转换成字符串
System.out.println("接收端:"+data);
//给出反馈,即写数据
OutputStream os = s.getOutputStream();
os.write("我已接收到".getBytes());
//释放资源
s.close();
ss.close();
//提示:其实释放ss就可以了,因为s是根据ss创建的。当然也可以像上面那样把2个都释放掉
}
}