java 网络(socket)
本文梳理一个基础的java TCP消息通信,构造一个简单的Packet进行传输,代码如下:
- Packet
public class Packet {private String attribute;public Packet(String attr){this.attribute = attr;}public String getAttribute() {return attribute;}public void setAttribute(String attribute) {this.attribute = attribute;} }
- 服务器端代码
public class App {private static final int PORT = 4000;public static void main(String[] args) throws IOException {ServerSocket listen = new ServerSocket(PORT);Socket client = null;while(true){client = listen.accept();new Thread(new ServerThread(client)).start();}} }
public class ServerThread implements Runnable{private static final int BUFSIZE =1024;private Socket client = null;public ServerThread(Socket client){this.client = client;}@Overridepublic void run() {try {InputStream in = client.getInputStream();OutputStream out = client.getOutputStream();byte[] buffer = new byte[BUFSIZE];while (in.read(buffer) != -1) {//判断包头if(buffer[0] == 0x01 && buffer[1] == 0x02){byte[] tmp = new byte[BUFSIZE];int index = 0;for(int i = 2; i < buffer.length; i++){tmp[index++] = buffer[i];}Packet packet = new Packet(new String(tmp,"GB2312"));System.out.println(packet.getAttribute());}else{System.out.println("消息格式不正确");}}out.close();in.close();} catch (IOException e) {e.printStackTrace();} } }
- 客户端代码
public class App {private static final int PORT = 4000;private static final int BUFSIZE =1024;public static void main(String[] args) throws IOException {Socket client = new Socket("127.0.0.1", PORT);InputStream in = client.getInputStream();OutputStream out = client.getOutputStream();Packet packet = new Packet("类型参数2345");byte[] output = new byte[BUFSIZE];output[0] = 0x01;output[1] = 0x02;int index = 2;//若增加包长度字段,则可实现packet的分包、组包byte[] tmp1 = packet.getAttribute().getBytes();for(int i= 0; i < tmp1.length; i++){output[index++] = tmp1[i];}out.write(output);byte[] buffer = new byte[BUFSIZE];while (in.read(buffer) != -1) { System.out.println(new String(buffer, "GB2312"));}out.close();in.close();client.close();} }
转载于:https://www.cnblogs.com/Fredric-2013/p/4580688.html
java 网络(socket)相关推荐
- Java 网络 socket 编程
使用套接字实现基于 TCP 协议的服务器和客户机程序 依据 TCP 协议,在 C/S 架构的通讯过程中,客户端和服务器的 Socket 动作如下: 客户端: 1.用服务器的 IP 地址和端口号实例化 ...
- java 半双工_(3)java网络socket通信---半双工、全双工
(3)java网络---半双工.全双工 1.半双工 1.1半双工原理:半双工即Half duplex Communication,是指在通信过程的任意时刻,信息既可由A传到B,又能由B传A,但只能有一 ...
- Java网络编程——9.服务器Socket
2019独角兽企业重金招聘Python工程师标准>>> 前一章从客户端的角度讨论了Socket,客户端就是向监听连接的服务器打开一个Socket的程序,不过如果不能与服务器对话,客户 ...
- 浅谈Java网络编程之Socket (2)
<浅谈Java网络编程之Socket (1)>中我们已经和大家说到客户端的网络编程,下面和大家分享的是服务器的实现代码. import java.net.*; import java.io ...
- java网络编程,通过TCP,Socket实现多对一的局域网聊天室
java网络编程,通过TCP,Socket实现多对一的局域网聊天室 可以实现多个客户端连接服务器,服务器接收到信息就会把信息广播到所有的客户端 这是服务器端的代码 View Code import j ...
- java网络编程之Socket编程
概念 网络编程分为BIO(传统IO).NIO.AIO.Socket编程属于BIO这种传统IO. InetAddress java.net.InetAddress是JAVA中管理IP地址的类,常用 pu ...
- JAVA网络编程之Socket
Socket网络编成是一种较为底层的网络数据传输,很多语言都支持. 本例是根据菜鸟教程中的Java网络编程而写. 详细内容参考请参考:http://www.runoob.com/java/java-n ...
- 浅谈Java网络编程之Socket (1)
和大家一起分享的是Java网络编程之Socket.在Java中Socket可以理解为客户端或者服务器端的一个特殊的对象,这个对象有两个关键的方法,一个是getInputStream方法,另一个是get ...
- 【Java】Socket网络编程解读与实战
Socket原理 Socket原理 <Socket 到底是什么> Socket--套接字 是网络应用程序编程的接口和一种机制 用套接字中的相关函数来建立连接和完成通信 Socket可以看成 ...
- JAVA 网络编程 Socket 详细说明,实现客户端和服务端相互推送消息
客户端代码: package com.lcx.socket;import java.io.BufferedReader; import java.io.BufferedWriter; import j ...
最新文章
- 修复.NET的HttpClient
- jquery.mobile手机网页简要
- You Need This One Skill to Succeed in IT--reference
- 白话Elasticsearch26-深度探秘搜索技术之function_score自定义相关度分数算法
- 从运维域看 Serverless 真的就是万能银弹吗?
- cmake Debug模式和Release模式
- 5000字干货原创 | APP版本迭代如何避免踩坑?
- (补)20200328:两两交换链表中的节点(leetcode24)
- 顺时针90°旋转矩阵
- Linux之如何启动tomcat服务
- 大数据之路-阅读笔记
- 美国3月通胀见顶了吗?
- Unity 通过修改图片透明度实现淡出效果
- MSP430学习笔记(一)--从点灯说起
- Flash-制作空心文字
- i春秋《从0到1:CTFer成长之路》通关WP
- 序列化和反序列化 加上json数据流转换
- php 共享缓存之yac 快来替换掉APCU memcache
- H5页面上传图片控件
- Bootstrap中jumbotron属性