socket编程浅知识
1:网络7层和tcp/ip5层
tcp协议; 三次握手 四次挥手 使用字节流进行信息交互
2:IP和端口
ip: 计算机在网络里面的唯一标识
端口: 程序在电脑里面的唯一标识
3: socket编程
InetAddress(ip和域名对象)
1 InetAddress[] addrs = InetAddress.getAllByName("www.baidu.com");
2
3 if (addrs != null && addrs.length > 0) {
4
5 for (InetAddress addr : addrs) {
6
7 System.out.println("--->" + addr.getHostAddress());
8
9 }
10
11 }
客户端 服务端 模型图

案例:完成客户端发送消息给服务端,并且服务端回答消息给客户端
服务器端:
1 package com.lv.study.pm.socket2;
2
3 import java.io.BufferedReader;
4 import java.io.BufferedWriter;
5 import java.io.IOException;
6 import java.io.InputStream;
7 import java.io.InputStreamReader;
8 import java.io.OutputStream;
9 import java.io.OutputStreamWriter;
10 import java.net.ServerSocket;
11 import java.net.Socket;
12
13 public class DemoServer {
14
15 public static void main(String[] args) {
16
17
18 try {
19 //1:新建一个服务端对象
20 ServerSocket serverSocket=new ServerSocket(8888);
21
22 System.out.println("i am server , start server......");
23
24 //2:等待客服端连接,开始监听
25 //如果有连接;将会得到客服端的连接(socket)
26 Socket server= serverSocket.accept();
27
28 //3:向客服端发送信息
29 OutputStream os=server.getOutputStream();
30
31 //3.1 将字节流包装成字符流进行操作
32 BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(os));
33
34 //3.2 发送信息 记得加上\n【为了方便读取】
35 String msg="hello,Najing,you ip:"+server.getInetAddress().getHostAddress()+"\n";
36 bw.write(msg);
37 bw.flush();//不然对方接收不了 这里不能用close
38
39 //4 接收客服端发给我的信息
40 InputStream is=server.getInputStream();
41
42 //4.1 将字节流变成字符流来操作
43 BufferedReader br=new BufferedReader(new InputStreamReader(is));
44
45 //4.2 信息读取
46 String readLine =br.readLine();
47 System.out.println(readLine);
48
49
50 } catch (IOException e) {
51 e.printStackTrace();
52 }
53
54 }
55
56 }
客服端:
1 package com.lv.study.pm.socket2;
2
3 import java.io.BufferedReader;
4 import java.io.IOException;
5 import java.io.InputStream;
6 import java.io.InputStreamReader;
7 import java.io.OutputStream;
8 import java.net.Socket;
9 import java.net.UnknownHostException;
10
11 public class DemoClient {
12
13 public static void main(String[] args) {
14
15 //1:新建一个socket对象 根据ip和端口
16 String ip="127.0.0.1";
17 int port=8888;
18 try {
19 Socket client=new Socket(ip,port);
20
21 //2 接收服务器发过来的消息
22 InputStream is=client.getInputStream();
23
24 //2.1转成字符流
25 BufferedReader br=new BufferedReader(new InputStreamReader(is));
26 String r1=br.readLine();
27 System.out.println("服务器发来的消息"+r1);
28
29 //3向服务器发送消息
30 OutputStream os=client.getOutputStream();
31 String msg="hello Nanjing,i am client \n";//\n代表读取的时候readline能读到
32 os.write(msg.getBytes());
33 os.flush();//如果不清空会有问题
34
35
36 } catch (UnknownHostException e) {
37 e.printStackTrace();
38 } catch (IOException e) {
39 e.printStackTrace();
40 }
41
42 }
43
44 }
结果:

socket编程浅知识的更多相关文章
- 你得学会并且学得会的Socket编程基础知识
这一篇文章,我将图文并茂地介绍Socket编程的基础知识,我相信,如果你按照步骤做完实验,一定可以对Socket编程有更好地理解. 本文源代码,可以通过这里下载 http://files.cnblog ...
- Linux下socket编程基本知识
本文档主要讲解了Linux下socket编程的一些基本知识,主要包括套接字和字节序的概念,以及一些常用的结构体和函数. 本文是在网易云课堂学习过程中的记录,这个老师讲得很不错,推荐大家围观. Linu ...
- Socket编程基础知识
端口号常识: 端口号被从1 开始分配. 通常端口号超出255 的部分被本地主机保留为私有用途. 1到255 之间的号码被用于远程应用程序所请求的进程和网络服务. 每个网络通信循环地 ...
- 你得学会并且学得会的Socket编程基础知识(续)——Silverlight客户端
本文将在这个案例的基础上,加入一个特殊场景,利用Silverlight来实现客户端.有的朋友可能会说,其实是一样的吧.请不要急于下结论,有用过Silverlight的朋友都有这种体会,很多在标准.NE ...
- C# socket编程实践——支持广播的简单socket服务器
在上篇博客简单理解socket写完之后我就希望写出一个websocket的服务器了,但是一路困难重重,还是从基础开始吧,先搞定C# socket编程基本知识,写一个支持广播的简单server/clie ...
- C# socket编程实践
C# socket编程实践——支持广播的简单socket服务器 在上篇博客简单理解socket写完之后我就希望写出一个websocket的服务器了,但是一路困难重重,还是从基础开始吧,先搞定C# ...
- PHP Socket 编程进阶指南
学习准备 Linux 或者 Mac 环境: 安装有 Sockets 扩展: 了解 TCP/IP 协议. socket函数只是PHP扩展的一部分,编译PHP时必须在配置中添加 --enable-sock ...
- Android Socket编程
花了大概两天的时间,终于把Android的Socket编程给整明白了.抽空和大家分享一下: Socket Programming on Android Socket 编程基础知识: 主要分服务器端编程 ...
- PHP socket编程需要了解的一些基本知识
前面讲到了 fsockopen 的各种情况,其中涉及了很多其它知识,比如chunked分段传输,Keep-Alive,HTTP头字段等额外的知识,如果对这些知识一知半解,会影响对 PHP 的 sock ...
- 浅谈Socket编程
浅谈Socket编程 说到Socket,想必大家会觉得陌生又熟悉.许多同学听说过Socket,但仅仅知道它翻译成中文叫做套接字,除此之外似乎并没有太多的了解了.那么今天我就来抛砖引玉地聊一聊Socke ...
随机推荐
- 🧠ChatGPT 中文提示语大全【超全 Prompt 用法】- 已分类
基于 awesome-chatgpt-prompts 进行分类,更方便查找自己所需,炼制适合自己的ChatGPT法宝. 工作 简历写手 我需要你写一份<2年工作经验的前端工程师>的简历,你 ...
- CORS 跨域请求一种解决方案
平常工作难遇到这类问题, 一般搭建新系统或搭建系统二时需要复用系统一一些前后端能力, 可能会遇到跨域拦截问题. 这里提供一种基于服务器解决方案. 更多其他方案, 详细细节可自行查阅更多资料, 写一些前 ...
- php nginx 504 Gateway Timeout 网关超时错误
对于 Nginx + FastCGI上的504网关超时错误(php-fpm),我们可以修改PHP和nginx的执行超时时间. 配置php 修改 php.ini(CentOS路径是/etc/php.in ...
- Docker Hub 镜像加速器——持续更新(2025年3月12日)
国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器.Docker 官方和国内很多云服务商都提供了国内加速器服务. 配置加速地址 Ubuntu 16.04+.Debian 8+ ...
- Flask快速入门1
因为新换了一个工作,项目使用了Flask框架技术,需要快速学习下,学过Django这个重量级的框架基础后,再去学习Flask框架相对还是容易的. 当然入门基础容易,要深入理解还是要慢慢花时间深耕练习使 ...
- EntityFramework 6 分页模式
在我的另一篇博客中提到了EntityFrameworkCore 分页问题, 中提到了EntityFrameworkCore在针对不同版本SQL Server数据库时如何指定分页模式,那么如何在Enti ...
- JBoltAI 与 AIGS 的深度融合:重构企业数智化未来
在企业数智化转型浪潮中,JBoltAI 凭借其独特的 AIGS(AI Generate Service)解决方案,正成为连接大模型能力与企业实际需求的桥梁.其核心价值在于通过技术框架的重构,将 AI ...
- 🔥Gitlab 删除仓库文件夹
1.进入文件夹 -> 右键 -> Git Bash Here -> 打开命令窗口 2.拉取代码到本地 (本地无项目情况) git clone git地址 3.拉取最新代码(本地已有项 ...
- 如何使用 MySQL 的 EXPLAIN 语句进行查询分析?
如何使用 MySQL 的 EXPLAIN 语句进行查询分析? EXPLAIN 是 MySQL 提供的分析 SQL 查询执行计划的工具,用于了解查询语句的执行过程,帮助优化查询性能. 1. EXPLAI ...
- mysql 5.7等保2.0安全配置
一.安装密码校验插件validate_password 在使用服务器插件之前,必须将它们加载到服务器中.MySQL支持在服务器启动和运行时加载插件.还可以在启动时控制加载插件的激活状态,并在运行时卸载 ...