首页 文章 精选 留言 我的

精选列表

搜索[网络通信],共1610篇文章
优秀的个人博客,低调大师

用java实现简单的网络通信,相当于一个最简单的控制台qq(附代码)

看完了《think in java》开始中文翻译的还行,到了后来就感觉有点乱了,干脆就看英文版的了。看完之后感触颇深。java!有前途! 开始学java网络方面的东西时,实在是无从下手,走了不少弯路。毕竟是在没有老师指导的情况下,网上文章多而不精,多是讲理论的东西。可能是太简单的缘故,高手都不屑一顾了。不过经过“不懈努力”还是给整明白了。 java网络通讯可以由"java.rmi"包和"java.net"来实现,rmi(remote method invocation)远程方法调用。如果想了解这两个包可以查看java帮助文档中的例子,本文就不做详细说明了。本文主要讲"java.net"中的"socket"通信方法. 那么什么是socket呢?一个socket连结就相当于一个生活中的电话连接。电话有电话号码,那么socket有需要什么呢?一个是主机名或域名如( [url]www.sina.com[/url])或ip地址,另一个是端口。什么是端口?如果说ip地址代表一个旅馆,那么端口就是房间号。这回明白了吧。 传统通信一般有服务端(server)和客户端(client)不过现在这种差别正在越来越小,甚至没有了c/s的差别。两个人聊qq,双方都是对等的。不过为方便起见还是按c/s讲了。 首先了解一下通讯的的基本模式。 服务端server ServerSocket listener = new ServerSocket(4700); //建立监听对象listener,端口自便不过不要设在0-1023之间 Socketserver = listener.accept(); //建立服务段对象 InputStream in = client.getInputStream(); OutputStream out = client.getOutputStream();//创建输入输出流 server.close(); 客户端client Socket client = new Socket("192.168.1.12",4700); //建立socket对象连接到192.168.1.12端口为4700的服务端(如果你只有一台电脑那 //么可以把ip设为127.0.0.1 InputStream in = client.getInputStream(); OutputStream out = client.getOutputStream();//创建输入输出流 server.close(); 好了客户端和服务端都通过in和out就可以通信了 详细代码: client: import java.io.*; import java.net.*; import ToolClass.*;//里面是一个输入类用于测试 public class Client { /** Creates a new instance of Client */ public Client() { } public static void main(String[] args){ System.out.println("this is client"); try{ String writetext=null; String get=null; Socket client = new Socket("192.168.1.12",4700); while(writetext!="bye"){ InputStream in = client.getInputStream(); OutputStream out = client.getOutputStream(); writetext = Input.readString();//send PrintWriter pout = new PrintWriter(out,true); pout.println(writetext); BufferedReader bin = new BufferedReader(new InputStreamReader(in));//receive get = bin.readLine(); System.out.println("client output:"+get); } client.close(); System.out.println("client:good bye"); } catch(IOException e){ System.out.println("err"); } } } server: import java.io.*; import java.net.*; import ToolClass.*; public class Server { /** Creates a new instance of Server */ public Server() { } public static void main(String[] args){ System.out.println("this is server"); try{ ServerSocket listener = new ServerSocket(4700); String receive=null; String send=null; Socket server = listener.accept(); while(receive!="bye"){ InputStream in = server.getInputStream(); OutputStream out = server.getOutputStream(); BufferedReader bin = new BufferedReader(new InputStreamReader(in));//receive receive = bin.readLine(); System.out.println("server output:"+receive); send = Input.readString();//sendinfo PrintWriter pout = new PrintWriter(out,true); pout.println(send); } server.close(); listener.close(); System.out.println("server:bye"); } catch(IOException e){ System.out.println("err"); } } } Input类: package ToolClass; import java.io.*; /** * * @author zsj1 */ public class Input { /** Creates a new instance of Input */ public Input() { } static InputStreamReader isr=new InputStreamReader(System.in); static BufferedReader br=new BufferedReader(isr); public static int readInt(){ int i=0; try{ i=Integer.parseInt(br.readLine()); } catch(Exception e){ System.out.println(e); } return i; } public staticfloat readFloat() { float f=0.0f; try{ f=Float.parseFloat(br.readLine()); } catch(Exception e){ System.out.println(e); } return f; } public staticString readString() { String s=""; try{ s=br.readLine(); } catch(Exception e){ System.out.println(e); } return s; } public staticdouble readDouble() { double d=0.0d; try{ d=Double.parseDouble(br.readLine()); } catch(Exception e){ System.out.println(e); } return d; } } 把三段代码放在三个.java文件里,并放在同一个文件夹下,就可以运行测试了。你愿意的话还可以改成图形界面的。 有不明白的email我 [email]xhinker@163.com[/email] 本文转自 xhinkerx 51CTO博客,原文链接:http://blog.51cto.com/xhinker/134238,如需转载请自行联系原作者

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册