注意哦前面我们使用UDP协议发送端和接收端使用的都是DatagramSocket类的对象
只不过两者使用的构造方法不一样 ,发送端使用的的是无参构造,接收端使用的是带参构造
注意注意
1. TCP发送数据
TCP发送数据的步骤
1.创建socket对象 直接使用socket类创建就可以
socket的构造方法有两个
一个是socket(String Host ,int port)
一个是socket(InetAddress innet , int port)
一般为了方便我门就是用第一个构造方法
2.获取输出流写数据
socket类里面有自己获取输出流的方法,因为我们是发送数据所以使用输出流
3.释放资源
具体的代码
/*
实现TCP发送数据
注意TCP要先建立连接才能进行通信,所以如果你先打开发送端程序就会报错 Connection refused: connect
因为没有办法和接收端三次握手
*/
public static void main(String[] args) throws IOException {
//创建socket对象
//创建对象方式1
//Socket socket = new Socket(InetAddress.getByName("192.168.0.109") , 12345);
//创建对象方式2
Socket socket = new Socket("192.168.0.109" , 12345);
//创建输出流对象
OutputStream os = socket.getOutputStream();
//输出对象
os.write("hello TCP 我来了".getBytes());
//释放资源
socket.close();
}
服务器端接收数据
程序 : 我在接收数据的时候进行了优化 。获得输入流以后我又把字节输入流转化为了字节缓冲流输入流
public static void main(String[] args) throws IOException {
//创建服务器socket对象
ServerSocket ss = new ServerSocket(12345);
//获取输入流对象
//但是我们会发现serversocket里面并没有获得输入流的方法我们还记得socket
// 里面是有获取输入 和输出流的方法的 所以看看serversocket 里面有没有什么方法可以得到一个socket
//是有的 serversocket的accept方法返回一个socket对对象
// 这一步叫做监听客户端的连接
Socket socket = ss.accept();
//获取输入流的
InputStream inputStream =socket.getInputStream();
//使用字节缓冲流读取数据
BufferedInputStream bis = new BufferedInputStream(inputStream);
//一次读取一个字节数组
byte by[] = new byte[1024];
int len ;
while ((len = bis.read(by)) != -1){ //实现了吧数据读到数组里面
System.out.println(new String(by,0, len));
}
//释放资源
socket.close();
}