socket基础案例
Socket协议的形象描述 通常短连接是这样:连接->传输数据->关闭连接 那什么时候用短连接呢? TCP/IP通信解读长短链接 一。通信方式 (二)连接方式 2.短连接 (三)发送接收方式 实际通信方式是这三类通信方式的组合。比如一般书上提供的 同步短连接Server/Client 其中异步长连接双工是最为复杂的一种通信方式,有时候经 二.报文格式 (一)阻塞与非阻塞方式 (二)循环读写方式 3.带长度报文头循环读写 ------------------------------------------------------------------------------------------------ 基于TCP/IP的通讯有两个步骤:1、连接;2、通讯。client连接到server的监听端口,随后在server端会随机产生一个通讯端口和client进行数据通讯。端口是个unsigned short类型的数据结构。所以最多连接是65535。系统一般要求1024前的端口是系统使用的。建议用户程序的监听端口大于10000,通讯端口是系统随机分配的。假如需要有10万个客户端,程序应该怎么处理呢? 如果只有一个服务器,只能用短连接的方式处理。如果都是长连接就要负载均衡。把连接分到其它服务器上去处理。 |
Socket案例如下
客户端代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class ClintSocketTest {
public void clintStart(){
try{
//Socket socket = new Socket("130.251.9.34", 8787);
//Socket中的2个参数分别是服务器地址和开放的端口号
Socket socket = new Socket("localhost", 8787);
System.out.println("Established a connection...");
// 由系统标准输入设备构造BufferedReader对象
BufferedReader sysin = new BufferedReader(new InputStreamReader(System.in));
// 由Socket对象得到输出流,并构造PrintWriter对象
PrintWriter out = new PrintWriter(socket.getOutputStream());
// 由Socket对象得到输入流,并构造相应的BufferedReader对象
BufferedReader in = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
String line; // 保存一行内容
// 从系统标准输入读入一字符串
line = sysin.readLine();
while (!line.equals("bye")) { // 若从标准输入读入的字符串为 "bye"则停止循环
// 将从系统标准输入读入的字符串输出到Server
out.println(line);
// 刷新输出流,使Server马上收到该字符串
out.flush();
// 在系统标准输出上打印读入的字符串
System.out.println("[Client]: " + line);
// 从Server读入一字符串,并打印到标准输出上
System.out.println("[Server]: " + in.readLine());
// 从系统标准输入读入一字符串
line = sysin.readLine();
}
out.close(); // 关闭Socket输出流
in.close(); // 关闭Socket输入流
socket.close(); // 关闭Socket
} catch (Exception e) {
System.out.println("Error. " + e);
}
}
public static void main(String[] args)
{
ClintSocketTest a = new ClintSocketTest();
a .clintStart();
}
}
服务端代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerSocketTest {
public void serverStart() {
try {
ServerSocket sc = new ServerSocket(8787);
Socket ss = sc.accept();
while(true){
//由socket对象得到输入流,构造BufferedReader对象
BufferedReader is=new BufferedReader(new InputStreamReader(ss.getInputStream()));
//由socket对象得到输出流,构造PrintWriter对象
PrintWriter os=new PrintWriter(ss.getOutputStream());
//由系统标准输入设备,构造BufferedReader对象
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
//从标准输入上打印客户端读入的字符串
System.out.println("Client:"+is.readLine());
//从标准输入读入一个字符串
String line=null;
line=sin.readLine();
//如果读取字符串为bye 则停止循环
while(!line.equals("bye")){
//向客户端输出该字符
os.println(line);
os.flush();
}
is.close();
os.close();
ss.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args)
{
ServerSocketTest serSocket = new ServerSocketTest();
serSocket.serverStart();
}
}
socket基础案例相关推荐
- Java进阶:基于TCP的网络实时聊天室(socket通信案例)
目录 开门见山 一.数据结构Map 二.保证线程安全 三.群聊核心方法 四.聊天室具体设计 0.用户登录服务器 1.查看当前上线用户 2.群聊 3.私信 4.退出当前聊天状态 5.离线 6.查看帮助 ...
- python 网络编程之Socket通信案例消息发送与接收
背景 网络编程是python编程中的一项基本技术.本文将实现一个简单的Socket通信案例消息发送与接收 正文 在python中的socket编程的大致流程图如上所示 我们来首先编写客户端的代码: # ...
- Socket基础API介绍
文章目录 1 Socket基础API介绍 1 Socket基础API介绍 我们先来看下使用Socket API建立简易TCP服务端和客户端的步骤: 用Socket API建立简易TCP服务端: 建立一 ...
- TF学习:Tensorflow基础案例、经典案例集合——基于python编程代码的实现
TF学习:Tensorflow基础案例.经典案例集合--基于python编程代码的实现 目录 Tensorflow的使用入门 1.TF:使用Tensorflow输出一句话 2.TF实现加法 3.TF实 ...
- mysql核心数据库_从MySQL基础进军MySQL核心架构 178集MySQL数据库核心基础视频教程 MySQL基础案例教程...
从MySQL基础进军MySQL核心架构 178集MySQL数据库核心基础视频教程 MySQL基础案例教程 课程目录 (1) 01MySQL基础_课程引入.avi (2) 02MySQL基础_为什么学习 ...
- JQuery-学习笔记04【基础——JQuery基础案例】
Java后端 学习路线 笔记汇总表[黑马程序员] JQuery-学习笔记01[基础--JQuery基础]--[day01] JQuery-学习笔记02[基础--JQuery选择器] JQuery-学习 ...
- 计算机应用基础案例教程总结,计算机应用基础案例教程
包杰军等编著的<计算机应用基础案例教程>以培养职业能力为目标,本着"做学合一"."理论与实践并行"."知识与技能并重"的教育思想 ...
- 计算机应用基础案例实训教程,计算机应用基础案例式实训教程
计算机应用基础案例式实训教程 语音 编辑 锁定 讨论 上传视频 <计算机应用基础案例式实训教程>是2014年3月出版的图书,作者是刘云芳.[1] 书 名 计算机应用基础案例式实训教程 ...
- php socket 基础知识
◆ Socket 基础 PHP使用Berkley的 socket库来创建它的连接.socket只不过是一个数据结构.你使用这个socket数据结构去开始一个客户端和服务器之间的会话.这个服务器是一 直 ...
最新文章
- laravel框架路由设置404方式
- boost::ratio_negate相关的测试程序
- thinkphp 5 stdClass Call to undefined
- linux启动系统不显示进度条设置方法
- 业务配置开发平台qMISPlat 2.0 产品介绍
- CI集成 ckeditor 配置
- Objective -C-2
- 云图说 | 3分钟创建一个游戏类工作负载
- 在windows xp下,一块网卡绑定多个ip
- 华为杯数学建模2020什么时候出结果_关于东北三省数学建模联赛及“华为杯”研究生数学建模竞赛的通知...
- Beagle 0.2.16(附 Ubuntu Edgy 安顿源)
- HTTP权威协议笔记-6.代理
- Node.js 教程第十四篇——Socket.io
- C语言获取USB设备协议版本,用CBI协议的USB软驱读取绣花机花版文件
- 工作总结,关于浏览器不兼容的问题。
- CBR VBR CVBR
- 百度一面 / 二面 总结
- 什么样的商业计划书才是投资人喜欢的
- java guardedby_Java多线程基础(五)——Guarded Suspension模式
- SSM_JSON格式增删改查
热门文章
- 浅谈(Java) N(A)IO-Netty框架
- 法国Adidas搞怪营销:“绑架”消费者来跑步
- LeetCode 101:第 5 章 千奇百怪的排序算法
- Docker启动服务报错Job for docker.service failed because the control process exited with error code
- scrapy爬虫网站数据
- GD(gradient descent):梯度下降法(BGD,SGD,mini-batch GD)
- 计算机连接网络是飞行模式怎么办,网络设置只剩飞行模式怎么办_win10笔记本打开只有飞行模式的解决方法...
- 【问题记录】Office2019与Visio2016冲突
- 电脑C盘下的Windows/System32/hkcmd.exe是什么??
- intent在android中的作用,Android开发理解Intent的用途