网络编程-Tcp通信

网络编程-Tcp通信


<pre class="java" name="code">//结束标记是个坑
//上传文件时 需要加入文件结束标记  socket.shutdownOutput;
//package com.it.www;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;


class SendClient {

	// 主函数抛出异常
	public static void main(String[] args) throws Exception {

		// 192.168.1.103
		Socket socket = new Socket("127.0.0.1", 10023);
	
		// 创建输入流,并把输入流打包进缓存区,能键盘输入
		BufferedReader bufferedReader = new BufferedReader(
				new InputStreamReader(System.in));
		//上传xxx.xxx文件
		BufferedReader bufferedReader2 = 
				new BufferedReader(new FileReader("xxx.xxx"));//当前同本程序目录中的文件

		// 获得客户端socket的输出流,并打包进缓存区
		//共两种方式 bufferedReader 和 printWriter
		//1.bufferedReader
		//BufferedWriter bufferedWriter = new BufferedWriter(
				//new OutputStreamWriter(socket.getOutputStream()));
		//2.PrintWriter
		PrintWriter printWriter = new PrintWriter(socket.getOutputStream(),true);
						
		// 定义socket读取流,读取服务端返回的信息
	     BufferedReader bufferedReaderIn = new BufferedReader(
				new InputStreamReader(socket.getInputStream()));
		
		// 键盘读入数据    读取时记住添加结束标记
		String dataString = null;
		while ((dataString = bufferedReader.readLine()) != null)
		{
			if ("over".equals(dataString))
				break;
			printWriter.println(dataString);
			/*bufferedWriter.write(dataString);
			bufferedWriter.newLine();//加上结束标记,能使服务器接收时识别,并知道了此行已经结束
			bufferedWriter.flush();*/
			//每输入一行,则获取服务器端反馈的信息
			System.out.println("服务器说: " + dataString + "的大写为 "
					+ bufferedReaderIn.readLine());
		}
		
		bufferedReader.close();
		socket.close();//结束时,向输出流发送-1,然后服务端接收到也会接收。
	}

}
		

class Server {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub

		ServerSocket serverSocket = new ServerSocket(10023);
		Socket socket = serverSocket.accept();
		
		//获取发送端的ip
		String ip = socket.getInetAddress().getHostName();
		System.out.println(ip+"  ................................connected");
		//获取socket的读取流中的数据
		BufferedReader bufferedReaderIn = 
				new BufferedReader(new InputStreamReader(socket.getInputStream()));
		
		//在服务器中创建文件xxxx.xxxx
		PrintWriter out = new PrintWriter(new FileWriter("xxxx.xxxx"),true);
		
		
		// 获取socket输出流
		//BufferedWriter bufferedWriterOut = 
				//new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
		PrintWriter printWriter = 
				new PrintWriter(socket.getOutputStream(),true);
		
		String dataString = null;
		while((dataString = bufferedReaderIn.readLine())!=null)
		{
			System.out.println(ip+"发过来的数据为  "+dataString );
			printWriter.println(dataString.toUpperCase());
			//bufferedWriterOut.write(dataString.toUpperCase());
			//bufferedWriterOut.newLine();//结束标记,使客户端认识到此行已经结束,防止等待
			//bufferedWriterOut.flush();//刷新缓存区数据,数据发送,必须加上
		}
		socket.close();
		serverSocket.close();
	}

}

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值