TCP的网络编程

package Internet;import org.junit.Test;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;/*
实现TCP网络编程*/
public class TCPTest {//    客户端@Testpublic void client() throws IOException {Socket socket = null;OutputStream os = null;try {InetAddress inet = InetAddress.getByName("192.168.1.104");socket = new Socket(inet,8899);os = socket.getOutputStream();os.write("你好呀我是客户端gg".getBytes());} catch (IOException e) {e.printStackTrace();} finally {//        资源关闭if (os != null){os.close();}if (socket != null){socket.close();}}}//    服务端@Testpublic void server() throws IOException {ServerSocket ss = null;Socket socket = null;InputStream is = null;ByteArrayOutputStream baos = null;try {ss = new ServerSocket(8899);socket = ss.accept();is = socket.getInputStream();//            若构建的数组太小,可能会有乱码
//       byte[] buffer = new byte[1024];
//       int len;
//       while ((len=is.read(buffer))!=-1){
//           String str = new String(buffer,0,len);
//           System.out.println(str);
//       }//        在 baos中有一个可扩容的数组,会自动存取所有字符baos = new ByteArrayOutputStream();byte[] buffer = new byte[5];int len ;while ((len = is.read(buffer))!=-1){baos.write(buffer,0,len);}System.out.println(baos.toString());} catch (IOException e) {e.printStackTrace();} finally {if(baos!=null){baos.close();}if(is!=null){is.close();}if(socket!=null){socket.close();}if(ss!=null){ss.close();}}}
}

二:

package Internet;import org.junit.Test;import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;public class TCPTest2 {@Testpublic void client() throws IOException {
//        1.Socket socket = new Socket("127.0.0.1",8080);
//        2.OutputStream os = socket.getOutputStream();
//        3.FileInputStream fis = new FileInputStream(new File("1.jpg"));
//        4.byte[] buffer = new byte[5];int len ;while ((len = fis.read(buffer))!=-1){os.write(buffer,0,len);}
//        5.fis.close();os.close();socket.close();}@Testpublic void server() throws IOException {ServerSocket ss = new ServerSocket(8080);Socket socket = ss.accept();InputStream is = socket.getInputStream();FileOutputStream fos = new FileOutputStream(new File("2.jpg"));byte[] buffer = new byte[5];int len ;while ((len = is.read(buffer))!=-1){fos.write(buffer,0,len);}fos.close();is.close();socket.close();ss.close();}
}

三:

package Internet;import org.junit.Test;import java.io.*;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;/*
从客户端发送文件给服务端,服务端保存到本地。并返回”发送成功“给客户端*/
public class TCPTest3 {@Testpublic void client() throws IOException {
//          1.Socket socket = new Socket(InetAddress.getByName("127.0.0.1"),8080);
//          2.OutputStream os = socket.getOutputStream();
//          3.FileInputStream fis = new FileInputStream(new File("1.jpg"));
//          4.byte[] buffer = new byte[5];int len ;while ((len = fis.read(buffer))!=-1){os.write(buffer,0,len);}
//       图片传完了不在输出数据socket.shutdownOutput();//          5.接受服务器端的数据并显示到控制台上InputStream is = socket.getInputStream();ByteArrayOutputStream baos = new ByteArrayOutputStream();byte[] buffer1 = new byte[5];int len1 ;while ((len = is.read(buffer1))!=-1){baos.write(buffer1,0,len);}System.out.println(baos.toString());//          6,fis.close();os.close();socket.close();is.close();baos.close();}@Testpublic void server() throws IOException {
//        1.ServerSocket ss = new ServerSocket(8080);
//        2.Socket socket = ss.accept();
//        3.InputStream is = socket.getInputStream();
//        4.FileOutputStream fos = new FileOutputStream(new File("3.jpg"));
//        5.byte[] buffer = new byte[5];int len ;
//        由于read时阻塞式的方法,没有明确告诉就不会结束循环。因此需要明确的指示结束(29行)while ((len = is.read(buffer))!=-1){fos.write(buffer,0,len);}//        6.服务器端给与客户端反馈OutputStream os = socket.getOutputStream();//        字符需要转换成字节流os.write("照片已收到!很漂亮!".getBytes());//        7.fos.close();is.close();socket.close();ss.close();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/418088.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ADFS 登录页面自定义

https://blogs.technet.microsoft.com/pie/2015/08/29/customizing-the-ad-fs-sign-in-pages-per-relying-party-trust/ http://eimagine.com/adfs-3-0-logon-page-customization/ https://technet.microsoft.com/en-us/library/dn280950.aspx转载于:https://www.cnblogs.com/h…

基本语法和数组(二维,多维,交错数组)

class Program{static void Main(string[] args){// TestJiaoCuo();Console.ReadKey();}//交错数组.static void TestJiaoCuo(){//交错数组. 交错数组的本质是1个1维数组 只不过这个1维数组的元素又是数组,.int[][] arr new int[3][];arr[0] new int[3];arr[1] new int[5];a…

NDK环境配置

Android Studio 配置 (不是SDK,麻烦各位看官看清楚) 手动配置 步骤一:下载sdk 下载方式有两种 一官方下载(请***) https://developer.android.com/ndk/index.html 二在studio中下载(如下载慢”拿梯子FQ”) 选择NDK和…

ado.net操作数据库

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient;namespace 操作数据库 {class Program{static void Main(string[] args){//1.造一个连接字符串string connstring "…

Class类的理解

package JavaReflcet;import org.junit.Test;public class ClassTest {/*获取Class的实例的方式*/Testpublic void test1() throws ClassNotFoundException { // 方式一:调用运行时类的属性: .classClass clazz person.class;System.out.println(clazz);// …

面向对象概述(课堂笔记)

例如: //创建一个Scanner(扫描器)类型的工具实例(对象),用于获取用户从键盘输入的数据 Scanner scannew Scanner(System.in); //创建一个Random(随机)类型的工具实例(对象),用来生成随机数 Rand…

反射的一些基础操作

一: package Test2; import Test.Person;import org.junit.Test;import java.lang.reflect.Field; import java.lang.reflect.Modifier;/* 获取当前运行时类的所有属性*/ public class FieldTest {Testpublic void test1(){Class clazz Person.class;//获取属性结…

关于__str__的介绍

在python语言里,__str__一般是格式是这样的。class A: def __str__(self): return "this is in str"事实上,__str__是被print函数调用的,一般都是return一个什么东西。这个东西应该是以字符串的形式表现的。如果不是要用…

object.prototype.call

object.prototype.call /* * object.prototype.call * 当一个object没有某个方法,但是其他的有,我们可以借助call或apply用其它对象的方法来操作。 * 语法: fun.call(thisArg[, arg1[, arg2[, ...]]]) * param: thisArg {object} //当前引用对象 …

BLOB数据类型、事务

Blob数据类型: 事务:

资源整理

资源整理 学习网站 学堂在线 链接:http://www.xuetangx.com/简介 学堂在线是免费公开的MOOC(大规模开放在线课程)平台,是国家教育部MOOC研究中心官方合作平台,致力于通过来自国内外一流名校开设的免费网络学习课程 EDX…

[工具] 知网(CNKI)文献下载工具

https://github.com/amyhaber/cnki-downloader 用于免费搜索,下载CNKI上的各类文献资料 转载于:https://www.cnblogs.com/Areas/p/5887671.html

Web中Servlet

一&#xff1a; web.xml中的代码如下 <web-app><display-name>Archetype Created Web Application</display-name><servlet><servlet-name>AddServlet</servlet-name><servlet-class>servlets.AddServlet</servlet-class>&l…

Thymeleaf视图模板的学习以及一些语法用法

流程&#xff1a;客户端向服务端的index组件发送请求&#xff0c;index组件会调用FruitDAO直至获取到数据库的数据&#xff1b;服务端获取到fruitList之后&#xff0c;存入到Session中&#xff0c;方便之后使用&#xff1b;之后调用ViewBaseServlet中的processTemplate方法&…

21 RadioGroup ListFragment

结构 MainActivity.java package com.qf.day21_radiogroupfragment_demo3;import java.util.ArrayList; import java.util.List;import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.…

XML与过滤器、事务管理

一 XML 二&#xff1a;过滤器&#xff08;Filter&#xff09; 功能&#xff1a; WebFilter("/demo01.do") public class Demo01Filter implements Filter {Overridepublic void init(FilterConfig filterConfig) throws ServletException {}Overridepublic void doF…