TCP/IP Socket通信demo
2024-08-27 04:15:31
一个实例通过client端和server端通讯
客户端发送:“我是客户端,请多关照”
服务端回复:“收到来自于"+s.getInetAddress().getHostName()+"的信息”
package com.ykw.net; import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException; import org.junit.Test; //TCP_IP1
//客户端给服务端发送信息。服务端输出此信息在控制台上
//网络编程实际上就是Socket的编程
public class TestTCP1 { //客户端
@Test
public void client(){
Socket socket = null ;
OutputStream os = null; try {
//1.创建一个Socket的对象,通过构造器指明服务端的ip地址,以及接受程序的端口号
socket = new Socket(InetAddress.getByName("127.0.0.1"),9090);
//2.getOutputStream():发送数据,方法返回OutputStream的对象
os = socket.getOutputStream();
//3.具体的输出过程
os.write("我是客户端,请多关照".getBytes());
} catch (IOException e) { e.printStackTrace();
}finally{
//4.关闭相应的流和Socket对象
if(os!=null){
try {
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(socket!=null){
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} } //服务器端
@Test
public void server(){
ServerSocket ss=null;
Socket s=null;
InputStream is=null;
try {
//1.创建一个ServerSocket对象,通过构造器指明自身的端口号
ss = new ServerSocket(9090);
//2.调用其accept()方法,返回一个Socket对象
s = ss.accept();
//3.调用Socket对象的getInputStream()获取一个从客户端发送过来的输入流
is = s.getInputStream();
//4.对获取的输入流进行的操作
byte [] b = new byte[20];
int len;
while((len = is.read(b))!=-1){
String str = new String(b,0,len);
System.out.println(str);
}
System.out.println("收到来自于"+s.getInetAddress().getHostName()+"的信息");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//5.关闭相应的流以及Socket,ServerSocket的对象
if(is!=null){
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(s!=null){
try {
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(ss!=null){
try {
ss.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} }
}
最新文章
- DWZ-JUI 树形Checkbox组件 无法一次获取所有选中的值的解决方法
- 轻松搞定C语言中复杂的声明
- js-小效果-瀑布流
- flask 程序结构概括
- 窗口 超类化 子类化 HOOK
- 基本套接字编程(3) -- select篇
- linux 文件属性
- 回收InnoDB表空间
- 网站全局js代码
- Machine Learning - XI. Machine Learning System Design机器学习系统的设计(Week 6)
- atoi()函数(转载)
- 安装Rocky版OpenStack 1控制节点+1计算节点环境部署脚本
- Java实现对文本文件MD5加密并ftp传送到远程主机目录
- OpenJDK-study-001 windows上安装Mercurial 4.4.1 克隆OPENJDK版本库
- java之数据库连接池-dbcp&;c3p0&;dbutils
- centos目录
- ffmpeg处理视频与声音
- 前端学习 -- Css -- 行间距
- ElasticSearch 获取es信息以及索引操作
- linux查询进程 kill进程