文章目录

  • 1.网络编程入门
    • 1.1软件架构介绍
    • 1.2互联网通信协议
    • 1.3网络编程的三要素
  • 2.TCP通信
    • 2.1通信分为客户端与服务器
    • 2.2 socket的介绍与使用
    • 2.3servletSocket的介绍与使用
  • 3.文件上传案例

1.网络编程入门

1.1软件架构介绍

c/s架构:客户端服务器模型,qq
b/s架构:浏览器服务器模型,网页版qq,网页版淘宝

1.2互联网通信协议

网络通信,互联网/局域网
通信:数据传输
协议:规范
TCP/IP协议
TCP传输控制协议
IP协议:因特网协议
java中常见的协议
TCP协议 传输控制协议
优点:面向有链接,传输数据需要建立三次握手
优点:传输数据是完整性的,安全的
缺点:性能较低,传输速度较慢
UDP协议:
特点:面向无连接,
优点:传输速率较高
缺点:传输数据时不能保证数据的完整性,容易产生数据丢失

1.3网络编程的三要素

1.网络通信协议
2.IP地址,每台计算机都有唯一的标识,IP地址,类似于人类的身份证
3.端口号:0-65535其中1024以下被厂商占用
计算机小知识:
IPV4,32位二进制数组成,
Ipv6 128位二进制数组成
ipconfig查看本机IP
ping对方IP
本机回环地址:127.0.0.1或者localhost
InetAddress类的基本使用
获取IPInetAddress。getLocalhost//获取本机IP
获取其他机器的IP
InetAddress,Byname
成员方法:
getHostname
getHostAddress,获取IP字符串

package com.itcast.Text03;import java.net.InetAddress;
import java.net.UnknownHostException;public class Demo01 {public static void main(String[] args) throws UnknownHostException {InetAddress localHost = InetAddress.getLocalHost();System.out.println(localHost);InetAddress byName = InetAddress.getByName("www.baidu.com");System.out.println(byName);String hostName = byName.getHostName();String hostAddress = byName.getHostAddress();System.out.println(hostName);System.out.println(hostAddress);}
}

2.TCP通信

2.1通信分为客户端与服务器

客户端:家用电脑
服务器:淘宝,京东服务器
TCP中两个重要的类:
Socket,代表客户端,套接字
ServerSocket类,代表服务器,

2.2 socket的介绍与使用

public Socket(String ip,int port)

根据参数自动连接服务器

常用方法:
public OutputStream getOutputStream();获取通信中输出流,
public InputStream getInputStream();获取通信通道的输入流
public void shutDownOutput();关闭连接通道的输入流
public void shutDownInput();关闭连接通道的输入流
close 关闭客户端对象:

2.3servletSocket的介绍与使用

public servletSocket(int port)
public socket accept();
public void close();
具体案例:

package com.itcast.text03;import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;public class demo01 {public static void main(String[] args) throws IOException {Socket socket = new Socket("127.0.0.1", 8888);System.out.println("连接服务器成功");OutputStream outputStream = socket.getOutputStream();outputStream.write("你好,我是客户端".getBytes());System.out.println("数据返送成功");outputStream.close();socket.close();System.out.println("客户端关闭");}
}package com.itcast.text03;import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;public class Demo02 {public static void main(String[] args) throws IOException {ServerSocket serverSocket = new ServerSocket(8888);System.out.println("服务器启动成功");Socket accept = serverSocket.accept();System.out.println("有客户端来了");InputStream in = accept.getInputStream();byte[] bs = new byte[1024];int len = in.read(bs);System.out.println("客户端发送消息的内容为:" + new String(bs, 0, len));in.close();System.out.println("服务器关闭");accept.close();serverSocket.close();}
}

简单的TCP双向通信

package com.itcast.text03;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;public class demo03 {public static void main(String[] args) throws IOException {Socket socket = new Socket("127.0.0.1", 9999);System.out.println("连接服务器成功");OutputStream outputStream = socket.getOutputStream();outputStream.write("我爱学习,学习使我快乐".getBytes());System.out.println("客户端发送数据成功");InputStream inputStream = socket.getInputStream();byte[] bs = new byte[1024];int len = inputStream.read(bs);System.out.println("服务器回复消息:" + new String(bs, 0, len));inputStream.close();outputStream.close();socket.close();System.out.println("客户端正常关闭");}
}package com.itcast.text03;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class demo04 {public static void main(String[] args) throws IOException {ServerSocket serverSocket = new ServerSocket(9999);System.out.println("服务器正常启动");Socket socket = serverSocket.accept();System.out.println("拦截到客户端");InputStream inputStream = socket.getInputStream();byte[] bs = new byte[1024];int read = inputStream.read(bs);System.out.println("客户端发送消息" + new String(bs, 0, read));OutputStream outputStream = socket.getOutputStream();outputStream.write("滚,你学不会的".getBytes());outputStream.close();inputStream.close();socket.close();serverSocket.close();System.out.println("服务器正常关闭");}
}

3.文件上传案例

客户端代码:

package com.itcast.text04;import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;public class Demo01 {public static void main(String[] args) throws IOException {Socket socket = new Socket("127.0.0.1", 8888);System.out.println("连接服务器成功");OutputStream outputStream = socket.getOutputStream();FileInputStream fileInputStream = new FileInputStream("copy01.png");byte[] bs = new byte[1024];int len = 0;while ((len = fileInputStream.read(bs)) != -1) {outputStream.write(bs, 0, len);}System.out.println("文件写入成功");socket.shutdownOutput();InputStream inputStream = socket.getInputStream();len = inputStream.read(bs);System.out.println("服务器回复:" + new String(bs, 0, len));System.out.println("文件传输完毕");inputStream.close();outputStream.close();fileInputStream.close();socket.close();System.out.println("客户端关闭成功");}
}package com.itcast.text04;import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class Demo02 {public static void main(String[] args) throws IOException {ServerSocket serverSocket = new ServerSocket(8888);Socket socket = serverSocket.accept();InputStream inputStream = socket.getInputStream();byte[] bs = new byte[1024];int len =0;FileOutputStream fileOutputStream = new FileOutputStream(System.currentTimeMillis() + ".png");while ((len = inputStream.read(bs)) != -1) {fileOutputStream.write(bs,0,len);}System.out.println("文件保存成功");OutputStream outputStream = socket.getOutputStream();outputStream.write("你的文件我收到了".getBytes());System.out.println("消息返回成功");outputStream.close();fileOutputStream.close();inputStream.close();socket.close();serverSocket.close();}
}

JAVA.SE Socket网络编程相关推荐

  1. Java SE day21_网络编程

    Java SE day21_网络编程 如果一个类没有构造方法: 案例(UDP的Socket) 案例(键盘输入接受) 案例(多线程聊天) TCP连接 案例(阻塞) 案例(键盘录入-输出控制台) 案例(多 ...

  2. Java之socket网络编程

    socket网络编程 文章目录 socket网络编程 一.网络编程概述 二.网络通信要素概述 三.IP和端口号 四.网络协议 五.TCP网络编程 六.UDP网络编程 一.网络编程概述 网络编程的目的 ...

  3. 【Java】Socket网络编程解读与实战

    Socket原理 Socket原理 <Socket 到底是什么> Socket--套接字 是网络应用程序编程的接口和一种机制 用套接字中的相关函数来建立连接和完成通信 Socket可以看成 ...

  4. (Java)socket网络编程及处理socket粘包拆包问题

    目录 1.socket简介 2.TCP/IP协议 3.tcp三次握手 4.socket的一些接口函数原理 5.java socket 长连接粘包拆包问题 6.socket模拟服务端客户端发消息 7.U ...

  5. Java se:网络编程

    概述 用Java语言实现计算机间数据的信息传递和资源共享 参考模型: OSI参考模型 TCP/IP参考模型 网络编程三要素 IP地址: 计算机的在网络中的标识 点分十进制标识法:4个字节,每个字节采用 ...

  6. java使用socket网络编程实现qq互聊(UPD简单版本)

    JAVA初学者.勿喷. eclipse稍微有点难用,关程序是在Console里面,要是没开出来并且死循环的话电脑cpu直接拉满了. 而且进程的关闭是输入指定的"再见"才关闭多线程, ...

  7. 【Java】Socket网络编程实现内网穿透、端口映射转发、内网穿透上网工具的编写,设置IP白名单防火墙

    这里写目录标题 简介 更新 一.背景 1.1 情景假设 1.2 想要达到的目的 1.3 局限 1.3 解决方案一(路由器NAT) 1.4 解决方案二(云服务器转发) 二.方案介绍 2.1 方案简介 2 ...

  8. Java的Socket网络编程

    1.Socket是什么? socket是进程之间通信的一种方式,调用这个网络库中的一些API实现分布在不同主机之间的相关进程的一些数据交换. 服务器端需要做的事情 打开一个通信通道并告诉本机,它愿意在 ...

  9. Java SE:浅析网络编程

    目录 一. 软件结构 二. 网络编程三大要素 2.1 IP地址和域名 2.1.1 IP地址 2.1.2 域名 2.2 端口号 2.3 网络协议 三. TCP与UDP协议 3.1 UDP协议 3.2 T ...

最新文章

  1. 如何手动的用jigloo设计器关联java界面文件 jigloo 设计器失去关联解决
  2. 大工13秋《专业英语(计算机英语)》在线测试2,大工13秋《专业英语(计算机英语)》在线测试2答案...
  3. 设置Web页面试用手机浏览器(iphone)
  4. 【Android】页面栈
  5. 4行代码AC——L1-026 I Love GPLT (5分)
  6. ngOnInit与constructor的区别
  7. 使用VSCode+PlantUML+C4-Model快速画架构图
  8. LeetCode(62):不同路径
  9. gradle构建java实例_Gradle构建Java应用程序
  10. PAT1018. Public Bike Management (30)
  11. 补一天三层的东西,ACL
  12. 怎样取消IBM笔记本电脑的桌面扩展功能?
  13. java毕业设计旅游官网mybatis+源码+调试部署+系统+数据库+lw
  14. Data + AI Summit 2022 PPT 下载
  15. html/css插入base64背景图片
  16. a标签实现下载图片功能
  17. nginx 的基本概念
  18. 固态硬盘是什么接口_今天说事儿—固态硬盘接口,防你入坑
  19. 线上3D产品展示的方式
  20. Android开源 -- 开源的基于 Material Design设计的豆瓣的Android客户端“豆芽”

热门文章

  1. 我的世界java村民繁殖条件,我的世界:四个新版村民繁殖的基础条件,而且这个指令也要关掉?...
  2. 什么样的人适合做数据分析师?
  3. ffmpeg视频播放过程
  4. 员工被提拔,还是被干掉,就看这3点......
  5. R3300L运行CoreELEC, EmuELEC和Armbian
  6. Cortex:多租户、可横向扩展的Prometheus即服务
  7. 关于语义相似度匹配的问题
  8. RAID重组——利用VMware和取证大师来重组
  9. 【Edraw Max教程】如何有趣的创建梦幻般的思维导图
  10. sla的三个服务等级_你知道吗?阿里云最新发布的服务等级协议SLA已领先全球水平...