一个实例通过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();
}
}
} }
}

最新文章

  1. DWZ-JUI 树形Checkbox组件 无法一次获取所有选中的值的解决方法
  2. 轻松搞定C语言中复杂的声明
  3. js-小效果-瀑布流
  4. flask 程序结构概括
  5. 窗口 超类化 子类化 HOOK
  6. 基本套接字编程(3) -- select篇
  7. linux 文件属性
  8. 回收InnoDB表空间
  9. 网站全局js代码
  10. Machine Learning - XI. Machine Learning System Design机器学习系统的设计(Week 6)
  11. atoi()函数(转载)
  12. 安装Rocky版OpenStack 1控制节点+1计算节点环境部署脚本
  13. Java实现对文本文件MD5加密并ftp传送到远程主机目录
  14. OpenJDK-study-001 windows上安装Mercurial 4.4.1 克隆OPENJDK版本库
  15. java之数据库连接池-dbcp&c3p0&dbutils
  16. centos目录
  17. ffmpeg处理视频与声音
  18. 前端学习 -- Css -- 行间距
  19. ElasticSearch 获取es信息以及索引操作
  20. linux查询进程 kill进程

热门文章

  1. html页面pc显示正常,在手机端适配也可以看整个页面
  2. 关于Mybatis 反向生成后 查询结果全部为null 解决办法
  3. JAVA判断质数
  4. hadoop版本总结
  5. 0基础浅谈反射型xss(2)
  6. 前端传给后端的数据类型为ImmutableMultiDict 咋办
  7. verify验证插件的详解
  8. Windows 断开CIFS共享出现 “此网络连接不存在”
  9. IDEA 引入外部jar包 pom 配置,防止打包失败
  10. 新版 iPad Pro 弯了,苹果表示这是正常现象……