tcp Java对话例子

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yun1996/article/details/79386997

udp通讯协议特点:

     1.将数据及其源和目的的封装为数据包,面向无连接

     2.每个数据包大小限制64K

     3.因为无连接,所以不可靠

     4.因为无连接,所以速度快 

     5.udp通讯部分客户端和服务端的,分发送端和接收端

tcp通讯的特点:

  1.tcp是基于io流进行数据的传输的,面向连接的

  2.tcp进行数据数据传输的时候没有大小限制

  3.tcp是通过三次握手机制,保证数据的完整性,可靠协议

  4.tcp是面向连接的,所以速度慢

扫描二维码关注公众号,回复: 4150465 查看本文章

  5.tcp是区分客户端与服务端的

  

  

  tcp协议下的socket类:

       1.socket(客户端类):tcp的客户端一旦启动那个,以服务端一定要建立连接

       2.serversocket(服务端类):

 

 tcp的客户端建立步骤:

 1.建立tcp的客户端服务

 2.获取对应的流对象

 3.写出或读取数据

  4. 关闭资源


package cn.tcp;

import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.Socket;

public class Demo1Clinet {

	public static void main(String[] args) throws IOException {
		//建立tcp服务
		Socket socket=new Socket(InetAddress.getLocalHost(),9090);
	//获取到socket的输出流对象
		java.io.OutputStream outputstream=socket.getOutputStream();
		//利用输出流把数据写出即可
		outputstream.write("hello".getBytes());
		//获取到一个输入流对象,读取服务端回送的数据
		InputStream inputStream=socket.getInputStream();
		byte[] buf=new byte[1024];
		int length=inputStream.read();
		System.out.println(new String(buf,0,length));
		
		
		//关闭资源
		socket.close();
	}
	
	
}


Java.net.BindException 端口被占用

ServerSocket的使用步骤::

 1.建立tcp服务端的服务

 2.接受客户端的连接,得到一个Socket对象

 3.获取对应的流对象,读取或者写出数据

 4.关闭资源


package cn.tcp;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Demo1Server {

	public static void main(String[] args) throws IOException {
		//建立tcp的服务端,并建立一个监听端口
		ServerSocket serversocket=new ServerSocket(9090);
	   //接受客户端的连接,accept()接受客户端的连接方法也是一个阻塞型的方法,没有客户端与其连接时,会一直等待下去。
		Socket socket=serversocket.accept();
		//获取输入流对象,读取客户端发送的内容
		InputStream inputstream=socket.getInputStream();
		byte[] buf=new byte[1024];
		int length=0;
		length=inputstream.read(buf);
		System.out.println(new String(buf,0,length));
	    //获取输出流对象,向客户端发消息
		OutputStream outputstream= socket.getOutputStream();
		outputstream.write("shoudao".getBytes());
		
		//关闭资源
		serversocket.close();
	}
}

猜你喜欢

转载自blog.csdn.net/yun1996/article/details/79386997