JAVA-建立TCP的客户端和服务端

TCP客户端
客户端发数据到服务端

		Tcp传输: 客户端建立的过程.
			思路:
            1.创建Tcp客户端socket服务.使用的是socket对象.
                建议该对象一创建就明确目的地.要连接的主机.
                
            2.如果连接建立成功,说明数据传输通道已建立.
                该通道就是socket流,是底层建立好的. 既然是流,说明这里既有输入,又有输出.
                想要输入和输出流对象,可以找socket来获取.
                可以通过getOutputStream(),和getInputStream()来获取两个字节流.
                
            3.使用输出流. 将数据写出.
            
            4.关闭资源

代码实现:

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

public class TCPClientDemo {
    public static void main(String[] args) throws IOException {
		
		System.out.println("TCP客户端启动...");
		
        //1.建立客户端socket服务
        Socket s = new Socket("127.0.0.1", 10000);

        //2.获取socket流中的输出流
        OutputStream out = s.getOutputStream();

        //使用输出流将指定的数据写出去
        out.write("tcp演示: Hello Java".getBytes());

        //关闭资源
        s.close();
    }
}

TCP服务端
服务端接收客户端的数据,并打印在控制台上

 Tcp传输,客户端建立的过程.
 			思路:
 			
            1.创建Tcp客户端socket服务.使用的是socket对象.
                建议该对象一创建就明确目的地.要连接的主机.
                
            2.如果连接建立成功,说明数据传输通道已建立.
                该通道就是socket流,是底层建立好的. 既然是流,说明这里既有输入,又有输出.
                想要输入和输出流对象,可以找socket来获取.
                可以通过getOutputStream(),和getInputStream()来获取两个字节流.
                
            3.使用输出流. 将数据写出.
            
            4.关闭资源

代码实现:

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

public class TCPServerDemo {
	public static void main(String[] args)  throws IOException {
	
		System.out.println("TCP服务端端启动...");
		
		//1.创建服务端对象
		ServerSocket ss = new ServerSocket(10000);
		
		//2.获取连接过来的客户端对象
		Socket s = ss.accept();	//阻塞式
		
		//获取ip地址
		String ip = s.getInetAddress().getHostAddress();
		
		//3.通过socket对象获取输入流,要读取客户端发来的数据
		InputStream in = s.getInputStream();
		
		byte[] buf = new byte[1024];
		
		//因为知道发的数据不会很多...所有就直接可以弄了
		int len = in.read(buf);
		String text = new String(buf,0,len);
		System.out.println(ip+":"+text);
		
		//4.关闭资源
		s.close();
		ss.close();
	
	}
}

UDP不同的是TCP必须先启动服务端…因为TCP是必须先建立连接的.


运行结果

先执行服务端

在这里插入图片描述
因为Socket s = ss.accept()是阻塞式的,需要接收到数据,才会往下执行.


执行客户端

在这里插入图片描述


这时再看服务端
在这里插入图片描述
收到了客户端发送的消息了…以及知道了是那个ip发送的…


还可以让客户端持续发送文字…然后服务端持续接收…或者通过客户端上传照片,音乐等文件到服务端上


JAVA-建立UDP的接收端和发送端

发布了87 篇原创文章 · 获赞 43 · 访问量 3987

猜你喜欢

转载自blog.csdn.net/weixin_42947972/article/details/103826389