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 ...
随机推荐
- Typora换主题
效果预览 以下就是我的 Typora 的主题,我平时使用 Vue 主题为主. 操作步骤 具体实现步骤如下: 打开偏好设置 点击外观 打开主题文件夹 粘贴样式文件到文件夹中 关键步骤截图 主题样式还可以 ...
- Tauri跨端笔记实战(1) - 从零打造一款跨端的 AI 笔记
前言 Tauri 跨端笔记实战项目是基于 Notegen 开源项目,本系列深度解析如何运用Tauri框架开发跨平台AI笔记应用.涵盖核心技术选型.架构设计.典型场景开发及常见问题解决方案,通过代码级演 ...
- 事件监听、焦点--java进阶day03
1.事件 按钮是组件,点击后就会重新游戏 对于这种点击了组件之后,有逻辑触发的操作,就是事件 2.事件中的专有名词 绑定监听也就是绑定监视,是真正组织代码逻辑的地方 要有绑定监听就需要监听器,今天学习 ...
- leetcode每日一题:使字符串平衡的最小交换次数
引言 今天开始,打算做一个新的系列:leetcode每日一题的题解.预期每天用90分钟的时间,去写一篇当天的每日一题的题解,这个目标跟早起结合在一起,才有足够的时间完成.其实早在前几年,就开始断断 ...
- opencv的学习记录(python)
作为最容易上手之一的语言,python拥有着大量的第三方库,这些第三方库的存在使得很多人可以专注于业务逻辑.数学逻辑而忽略繁琐的代码操作,python的opencv第三方库就是其中之一. 一.第三方库 ...
- FREERTOS指令测试的思考
采用freertos编程后,有必要增加指令测试的功能: 1.便于对于软件各个子模块或功能点进行测试. 2.便于对硬件各个功能点是否正常进行测试. 在裸机编程中,我们一般使用串口进行运行数据的打 ...
- 结合钉钉机器人用python写监控打印机碳粉状态程序
点击查看代码 from pysnmp.hlapi import * import requests import json # 配置信息 PRINTER_IP = '1.1.1.1' # 打印机IP ...
- eolinker解决两个变量合并成一个变量提供其他接口使用的方法
特别注意:需要使用全局变量或者预处理前务必阅读本链接https://www.cnblogs.com/becks/p/13713278.html 场景描述:提交订单的接口请求中,有一参数是由商品价格+运 ...
- Sentinel源码—4.FlowSlot实现流控的原理
大纲 1.FlowSlot根据流控规则对请求进行限流 2.FlowSlot实现流控规则的快速失败效果的原理 3.FlowSlot实现流控规则中排队等待效果的原理 4.FlowSlot实现流控规则中Wa ...
- 为什么 Java 新生代被划分为 S0、S1 和 Eden 区?
为什么 Java 新生代被划分为 S0.S1 和 Eden 区? 在 Java 的 垃圾回收(GC)机制中,新生代 被进一步划分为 Eden 区 和两个 Survivor 区(S0 和 S1).这种划 ...