今天学习了一下java如何实现socket通信,感觉难点反而是在io上,因为java对socket封装已经很完善了。

今天代码花了整个晚上调试,主要原因是io的flush问题和命令行下如何运行具有package的类,不过最后问题基本都解决了,把代码贴出来供大家参考

server

public class TcpServer {

public static void main(String[] args) throws Exception {

ServerSocket server = new ServerSocket(9091);

try {

Socket client = server.accept();

try {

BufferedReader input =

new BufferedReader(new InputStreamReader(client.getInputStream()));

boolean flag = true;

int count = 1;

while (flag) {

System.out.println(客户端要开始发骚了,这是第 + count + 次!);

count++;

String line = input.readLine();

System.out.println(客户端说: + line);

if (line.equals(exit)) {

flag = false;

System.out.println(客户端不想玩了!);

} else {

System.out.println(客户端说: + line);

}

}

} finally {

client.close();

}

} finally {

server.close();

}

}

}

client

public class TcpClient {

public static void main(String[] args) throws Exception {

Socket client = new Socket(127.0.0.1, 9091);

try {

PrintWriter output =

new PrintWriter(client.getOutputStream(), true);

Scanner cin = new Scanner(System.in);

String words;

while (cin.hasNext()) {

words = cin.nextLine();

output.println(words);

System.out.println(写出了数据: + words);

}

cin.close();

} finally {

client.close();

}

}

}

补充知识:Java-Socket通信 同时JSON传递与解析

服务端

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.ServerSocket;

import java.net.Socket;

import java.util.Scanner;

import net.sf.json.JSONObject;

public class Server_2 {

public static void main(String[] args) {

Scanner in=new Scanner(System.in);

InputStreamReader isr;

BufferedReader br;

OutputStreamWriter osw;

BufferedWriter rw;

try {

ServerSocket serverSocket=new ServerSocket(4444);

Socket socket=serverSocket.accept();

isr=new InputStreamReader(socket.getInputStream());

br=new BufferedReader(isr);

String str=br.readLine();

JSONObject object=JSONObject.fromObject(str);

System.out.println("ID:"+object.getInt("ID"));

System.out.println("Name:"+object.getString("name"));

System.out.println("password:"+object.getString("password"));

br.close();

socket.close();

serverSocket.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

客服端

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.Socket;

import java.util.Scanner;

import net.sf.json.JSONObject;

public class Client_2 {

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

InputStreamReader isr;

BufferedReader br;

OutputStreamWriter osw;

BufferedWriter rw;

try {

Socket socket = new Socket("localhost", 4444);

osw = new OutputStreamWriter(socket.getOutputStream());

rw = new BufferedWriter(osw);

User user = new User();

System.out.println("Id:");

user.setID(in.nextInt());

in.nextLine();

System.out.println("Name:");

user.setName(in.nextLine());

System.out.println("Password:");

user.setPassword(in.nextLine());

JSONObject jsonObject = JSONObject.fromObject(user);

rw.write(jsonObject.toString()+"\n");

rw.close();

socket.close();

} catch (Exception e) {

// TODO: handle exception

}

}

}

User

public class User {

int ID;

String name;

String password;

public int getID() {

return ID;

}

public void setID(int iD) {

ID = iD;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

}

以上这篇Java实现简单的socket通信教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持聚米学院。

java 通信 教程_Java实现简单的socket通信教程相关推荐

  1. java tcp 乱码_Java和C++通过Socket通信中文乱码的解决

    理想的开发状态是我开始就是C开发,一直是C的开发,现在还是C的开发,若干年后,幸运的话,我可以成为C语言的高手或者专家-- 更实际的情况是我开始是C开发,后来变成了JAVA开发,然后又做起了VC++的 ...

  2. Android简单实现Socket通信,客户端连接服务器后,服务器向客户端发送文字数据

    案例实现的是简单的Socket通信,当客户端(Android客户端)连接到指定服务器以后,服务器向客户端发送一句话文字信息(你可以拓展其它的了) 先看一下服务端程序的实现吧 Server.java i ...

  3. 简单的socket通信实现

    一.什么是socket网络通信? socket也称作"套接字",描述了计算机的IP地址和端口,运行在计算机中的程序之间采用socket进行数据通信.通信的两端都有socket,它是 ...

  4. 基于TCP/IP协议的Java服务端与Android客户端的Socket通信及数据交互

    基于TCP/IP协议的Java服务端与Android客户端的Socket通信及数据交互 一.前言 1.Java服务端程序代码的项目名为TcpSocketServerOfJava,包名为com.exam ...

  5. 使用vb.net开发简单的socket通信

    使用vb.net开发简单的socket通信(环境是visual stdio 2019) 说明 参考文章 实现功能 效果展示 代码 服务端 客户端 总结 说明 之前用vb6编程时都是用的winsock控 ...

  6. UDP通信——使用python实现简单的UDP通信

    UDP通信--使用python实现简单的UDP通信 UDP 的英文单词是User Datagram Protocol,缩写为UDP,是一种用户数据报协议,又称为用户数据报文协议,是一种报文的协议,是一 ...

  7. Socket通信学习(一):Socket通信原理

    Socket通信学习(一):Socket通信原理 HoloLens的开发最近需要用到Socket通信,所以创建本系列进行记录,欢迎大家批评指正! 前言 应用Socket进行设备通信,首先需要了解Soc ...

  8. java程序设计之网络编程基础教程_Java程序设计之网络编程基础教程

    基本信息 书名:Java程序设计之网络编程基础教程(21世纪高等学校计算机基础实用规划教材) :43.50元 作者:李芝兴 主编 出版社:清华大学出版社 出版日期:2012-12-1 ISBN:978 ...

  9. java sslsocket程序_JAVA与C++进行sslsocket通信,JAVA做服务端或客户端

    前几天有位网友问我关于Unity3D里面使用Protobuf的方法,一时有事拖到现在才写这篇文章,不好意思哈. 本文测试环境: 系统:WINDOWS 7(第3.6步).OS X 10.9(第4步) 软 ...

最新文章

  1. java 读取excel_Java12POI操作Excel
  2. 不明原因的约束报错的两种处理方式
  3. Java设计模式(十一):组合设计模式
  4. android webviwe 头布局,Android布局问题,带有WebView下方的按钮
  5. win7系统锁定计算机设置方法
  6. python编程函数_python函数式编程
  7. ubuntu 一张网卡绑定多个ip
  8. diabetes影响因子2017_2017年度影响因子看点和预测(MedSci出品)
  9. 巴比特 | 元宇宙每日荐读:三位手握“价值千万”藏品的玩家,揭秘数字藏品市场“三大套路”...
  10. iframe预览文件
  11. 【Processing】行走的行星 动态海报 processing艺术与科技
  12. 出门在外如何保管毕业证原件_出门在外时如何控制HomeKit智能家居
  13. C++:实现量化Overnight-indexed swap 隔夜指数掉期测试实例
  14. OpenGL 相关的理论
  15. 如何在未越狱iOS设备上安装IPA
  16. 实践一年之久,vivo 如何基于 APISIX 进行业务基础架构的演进
  17. 15个漂亮的国外Flash网站模板下载
  18. 控制结构(强化):12.阿迪玩游戏
  19. C语言 求一元二次方程ax2+bx+c=0的根
  20. MapBox加载不同风格的地图

热门文章

  1. JS事件流和事件委托
  2. d3.js 简易柱形图,入门demo
  3. hive数据倾斜的解决办法
  4. ROS学习笔记_创建工作空间(一)
  5. Spark编程模型几大要素
  6. 预备作业01:你期望的师生关系是什么?
  7. is not allowed to connect to this MySQL server解决办法
  8. 《BI那点儿事》三国人物智力分布状态分析
  9. grunt.config()_gruntjs api
  10. oracle数据库自动备份