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
0
投稿
猜你喜欢
- 公司编辑妹子需要爬取网页内容,叫我帮忙做了一简单的爬取工具这是爬取网页内容,像是这对大家来说都是不难得,但是在这里有一些小改动,代码献上,大
- Maven导入thymeleaf依赖飘红1、运行环境操作系统:win10jdk版本:1.8idea版本:2020.1maven版本:3.3.
- 前言先说缓存,合理使用缓存是优化中最常见的,将从数据库中查询出来的数据放入缓存中,下次使用时不必从数据库查询,而是直接从缓存中读取,避免频繁
- 以前就遇到过这个问题,今天重新拾起来。跑马灯效果其实就是当文字超过TextView控件宽度的时候,使用滚动的方式显示出来:方法1:(直接xm
- 介绍装饰者模式(Decorator Pattern):动态地给一个对象增加一些额外的职责,增加对象功能来说,装饰模式比生成子类实现更为灵活。
- 一、点睛邻接矩阵通常采用一个一维数组存储图中节点的信息,采用一个二维数组存储图中节点之间的邻接关系。邻接矩阵可以用来表示无向图、有向图和网。
- 一:引入依赖包<!-- https://mvnrepository.com/artifact/org.springframework.
- 用注解实现Mybatis插入数据返回自增的主键Id我们在数据库表设计的时候,一般都会在表中设计一个自增的id作为表的主键。这个id也会关联到
- 需求:有些时候,我们需要连接多个数据库,但是,在方法调用前并不知道到底是调用哪个。即同时保持多个数据库的连接,在方法中根据传入的参数来确定。
- 提示:这里可以添加本文要记录的大概内容:例如:一般系统前端调用后台相关功能接口时,需要验证此时用户的权限是否满足调用该接口的条件,因此我们需
- 二维数组实现数字拼图,供大家参考,具体内容如下二维数组可以自己随意定义大小,通过方法判断来实现对所有的数字进行随机打乱,并可以通过移动来正确
- 这篇文章memo一下Jvm中关于时区设定的基础操作。Java的时区设定这里列出如下三种方式方式说明TimeZone.setDefault方式
- 1、lock是可中断锁,而synchronized 不是可中断锁线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁
- maven打包时候修改包名称带上git版本号和打包时间使用 maven 插件 git-commit-id-plugin 可以获取项目的git
- 本文实例讲述了Java编程实现非对称加密的方法。分享给大家供大家参考,具体如下:对称加密算法在加密和解密时使用的是同一个秘钥;而非对称加密算
- 场景做一个消息中心,专门负责发送消息。消息分为几种渠道,包括手机通知(Push)、短信(SMS)、邮件(Email),Websocket等渠
- 至少有K个重复字符的最长子串给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不
- list stream: reduce的使用stream 中的 reduce 的主要作用就是stream中元素进行组合,组合的方式可以是加减
- SpringBoot接收文件和对象使用场景:某个接口,需要同时接收文件和实体,也就是参数一、这个时候,前端就不能json格式传送数据了,要用
- 在很多web产品中都需要实现在同一时刻,只能允许一个账号同时只能在一个浏览器当中登录。通俗点讲就是当A账号在浏览器1当中登录了,此时在浏览器