Java之TCP网络编程

最近学习的内容是网络编程这一块,先对TCP这部分做一下总结。

TCP提供了客户端 - 服务器应用程序相互通信的可靠的点对点通信通道。要通过TCP进行通信,客户端程序和服务器程序建立彼此的连接。每个程序将一个套接字绑定到其连接的末端。要进行通信,客户端和服务器都会读取并写入连接到该连接的套接字。

接下来套接字就是重点了,那么什么是套接字呢?套接字其实就是两个程序之间的双向通信连接的一个端点。Socket类表示这两个程序之间的连接。Socket有两个类:客户端(Socket)和 服务端(ServerSocket)

为了更直观的感受,上示意图:


最后送上源代码:

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

//客户端源码
public class TCPClientTest {


	public static void main(String[] args) {
		// TODO Auto-generated method stub


		try {
			//创建套接字实例
			Socket socket = new Socket("127.0.0.1",12306);
			


			//建立输出流,把a.txt的内容读出存储在msg内
			BufferedInputStream bis = new BufferedInputStream(new FileInputStream("a.txt"));
			byte[] a = new byte[512];
			int len = bis.read(a);
			String msg = new String(a,0,len);
			
			//使用套接字的getOutputStream方法向服务端传输
			OutputStream os = socket.getOutputStream();
			os.write(msg.getBytes());
			os.flush();//一定要加,不然服务端就收不到数据
			
			//关闭流
			bis.close();
			os.close();
			socket.close();
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}


}

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

public class TCPServerTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//服务端存放文件的位置
		String path = "D:\\万物\\蓝桥作业\\a.txt";
		
		try {
//			创建socket实例
			ServerSocket server = new ServerSocket(12306);
			Socket socket = server.accept();
			
			//创建输入流接受来自客户端的数据
			InputStream is = socket.getInputStream();
			byte[] a = new byte[512];
			int len = is.read(a);
			String str = new String(a,0,len);
			
			//存储数据在指定的文件中
			BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(path));
			bos.write(str.getBytes());
			
			//关闭流
			bos.close();
			is.close();
			socket.close();
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值