Java网络编程之TCP程序设计
作者:Killer-V 发布时间:2023-10-29 15:53:32
标签:java,TCP
本文实例为大家分享了Java网络编程TCP程序设计的具体代码,供大家参考,具体内容如下
[1] TCP编程的主要步骤
客户端(client):
1.创建Socket对象,构造方法的形参列表中需要InetAddress类对象和int型值,用来指明对方的IP地址和端口号。
2.通过Socket对象的getOutputStream()方法返回OutputStream抽象类子类的一个对象,用来发送输出流。
3.通过输出流的write方法输出具体的信息。
4.关闭相应的流和Socket对象。
服务端(server):
1.创建ServerSocket类的对象,在构造器中指明端口号。
2.调用ServerSocket类对象的accept()方法,返回一个Socket类的实例。
3.通过Socket实例的getInputStream()方法获取一个输入流,用来接收来自客户端的信息。
4.利用输入流接收数据,并处理数据。
5.关闭相应的流、Socket对象、ServerSocket对象。
[2] Java源程序 ( 注意:在测试时先开启服务端方法server(),再开启客户端方法client() )
package pack01;
import java.io.*;
import java.net.*;
import org.junit.Test;
public class TestNet1 {
@Test //***********************客户端测试方法***********************
public void client() {
Socket socket = null; //建立客户端网络套接字
OutputStream socket_os = null; //客户端输出流
try {
//1.获取本机环路地址
InetAddress inet = InetAddress.getByName("127.0.0.1");
//2.创建Socket对象
socket = new Socket(inet, 10000);
//3.获取输出流
socket_os = socket.getOutputStream();
//4.客户端输出信息
socket_os.write( "客户端发送信息".getBytes() );
} catch (IOException e) {
e.printStackTrace();
} finally {
try { //关闭输出流
socket_os.close();
} catch (IOException e) {
e.printStackTrace();
}
try { //关闭客户端套接字
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Test //***********************服务端测试方法***********************
public void server() {
ServerSocket serSocket = null;
Socket socket = null;
InputStream socket_is = null;
try {
serSocket = new ServerSocket(10000);
socket = serSocket.accept(); //获取服务端套接字
socket_is = socket.getInputStream(); //获取输入流
byte[] b = new byte[100]; //用于接收信息的字节数组
int len;
StringBuffer sb = new StringBuffer();
while( (len = socket_is.read(b)) != -1 ) {
sb.append( new String(b,0,len) ); //将字节信息连续保存在buffer数组里
}
System.out.println("来自" + socket.getInetAddress().getHostName() + "的信息:");
System.out.println( sb );
} catch (IOException e) {
e.printStackTrace();
} finally {
try { //关闭输入流
socket_is.close();
} catch (IOException e) {
e.printStackTrace();
}
try { //关闭Socket对象
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
try { //关闭ServerSocket对象
serSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
来源:https://www.cnblogs.com/EarthPioneer/p/9450280.html


猜你喜欢
- 本文实例为大家分享了Android弹性滑动类Scroller的具体代码,供大家参考,具体内容如下Scroller是什么 Scroller就是
- 本文实例讲述了Android DigitalClock组件用法。分享给大家供大家参考,具体如下:DigitalClock组件的使用很简单,先
- 排查@CacheEvict注解失效我简单看了一下《Spring实战》中的demo,然后就应用到业务代码中了,本以为如此简单的事情,竟然在代码
- 现在有很多库、实用工具和程序任Java开发人员选择。每个工具都有其优点,但其中有一些因它的知名度、多功能性和有效性从众多选项中脱颖而出。以下
- 本来就是基础知识,不能丢的太干净,今天竟然花了那么长的时间才写出来,记一下。有如下的一颗完全二叉树:先序遍历结果应该为:1 2&
- app_main上一篇文章:# Android 10 启动分析之servicemanager篇 (二)在init篇中有提到,init进程会在
- 前言 Gallery的Item使用的是一个ImageView+TextView,并且为其设置了selector,当使用setSe
- Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建
- 本文实例讲述了Android编程判断当前应用是否在后台运行的方法。分享给大家供大家参考,具体如下:/** 判断程序是否在后台运行 */pub
- 本文实例为大家分享了用JavaMail发送HTML模板邮件的具体代码,供大家参考,具体内容如下依赖<dependency>&nb
- 修改readme.txt文件如下:Git is a distributed version control system.Git is fr
- bootstrap和application的区别说明bootstrap和application都是SpringBoot项目中的配置文件,他们
- 以下是app.config或web.config的定义,定义了一个参数,键为Isinit,值为false<?xml version=&
- nacos升级spring cloud 2020.0无法使用bootstrap.yml之前用spring cloud整合nacos,需要一个
- 上篇《Spring Aop实例之xml配置》中,讲解了xml配置方式,今天来说说AspectJ注解方式去配置spring aop。依旧采用的
- 本文实例为大家分享了基于C#实现网页爬虫的详细代码,供大家参考,具体内容如下HTTP请求工具类:功能:1、获取网页html2、下载网络图片u
- 本文实例讲述了Android实现长按back键退出应用程序的方法。分享给大家供大家参考。具体分析如下:最近在做一个Android上的应用,碰
- 前言建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一
- 我们知道,当我们按返回或Home键退出应用程序的界面时,应用程序会在后台被挂起。这么设计的好处是,由于应用被系统缓存在内存中,那么在用户打开
- 平时开发,基本不改变的常量我们都放在了配置项里,如properties或yml文件里,这个时候为了只在启动时候进行加载。如何做呢?我们通过s