java 通信 看文章的时候将我是理科生,看逻辑的时候我是文科生_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java 通信 看文章的时候将我是理科生,看逻辑的时候我是文科生

java 通信 看文章的时候将我是理科生,看逻辑的时候我是文科生

 2014/9/3 0:34:12  teibunsei  程序员俱乐部  我要评论(0)
  • 摘要:最近学习了java通信,由于我文科生,这个思维比较分散,经常走不回来,所以。。。在研究代码如何写的更好的时候经常由于走的太远了,代码怎么写都写不完,改也改不好~~唉~希望大家写代码的时候都能整体布局一下,大概有一个规范,让自己的脑子能够走一遍的时候流畅的走一遍。首先我们要记得时时把握自己学习的进度,先想一下通信的大框架,解决一下概念问题,我们知道如果脑子能想到一样东西,然后画不出来或者做不出来,那是扯淡,当然可能是个人见解。1.在物理硬件上实现通信的方式是通过电流,通过大电线杆子传过去
  • 标签:Java 文章
最近学习了 java 通信 , 由于我文科生,这个思维比较分散,经常走不回来,所以。。。在研究代码如何写的更好的时候 经常由于走的太远了, 代码怎么写都写不完,改也改不好~~ 唉~ 希望大家写代码的时候都能 整体布局一下 , 大概 有一个 规范 , 让自己的脑子 能够 走一遍的时候 流畅的走一遍。



首先 我们要记得时时把握自己学习的进度,先想一下通信的大框架,解决一下概念问题,我们知道如果脑子能想到一样东西,然后画不出来或者做不出来,那是扯淡,当然可能是个人见解。

   1.在物理硬件上 实现 通信的方式 是 通过电流,通过大电线杆子传过去,对面接收到电流,然后解释电流,  然后就实现了通信。
    如何解释电流能,当然有一系列规则,会在后续解释这些规则。
    这个软件上实现也不能离开这最基本的形式,因为计算机的数据是 0 1 , 由高低电压区分,而通信信号也是这么来的。

  2.有了信号的交换,我们只能形成 一对一的 通信 ,为什么呢 , 因为线段只有两个端点,两天电线之间也只能实现一对一的通信是吧,如果每个人都跟一个人接一根线太麻烦,所以,所以,有人想到大家都接一个地方,然后由这个地方再将信息传出去,就行了不是,嘿嘿,这也是电话业务中交换机概念的由来。 这个集中了大家信息的中转站就是 计算机通信中的 服务器的概念。 大家把信息统一发给服务器,服务器再 发给指定的 一个人 , 或者 几个人 , 或者所有人。
  3.这个我们实现的java通信 是 计算机之间的通信 ,计算机通信有一个发展了很久的连接方式,它就是互联网, 计算机的通信 又涉及到 计算机这个硬件 以及它 发展历史中的一些特殊的问题,计算机是通过 ip 和 端口 实现和别的计算机之间的通信的,ip 就是 互联网中一台电脑的地址,概念是抽象自 现实社会中人们的住址,
   
   * 端口号是因为计算机自身的特点,电话只能一次跟一个人打电话,因为我们一般一个人用一台电话,然后给一个人打,计算机可以同时跟外部多个 对象进行通信, 因为计算机有很多种端口号,端口号 不提了 , 简单留意一下 0 - 1024 的端口号是预留给系统软件的。

    有了这个最基本的概念 , 我们也不去从底层慢慢往上爬了,我们直接在软甲里实现一下通信,有了前人的历史我们就好走多了 哈 。 我们java 已经 有了 集成好了 服务器和 客户端 功能的 类 , java.net 这个包里, java.net.包里的这个  ServerSocket 类就是 用代码 实现了服务器的功能 , 这里用到java这个编程语言的特点哈, 类与对象 new 一个 socket 类 的对象, serversocket 看名字就知道它的意思是服务 socket 对不对, socket 就是 客户端 ,上一个是服务它的, 就是服务端,有了客户端有了服务端,在加上这是在计算机上,而且是java语言 , 我们大概知道怎么写了把 ?

我们先要写一个服务端,然后客户端通过 服务端 达成 与其他客户端之间的通信。

代码如下
class="java">java.net.ServerSocket server = new ServerSocket(9999)
;


在写服务器的时候,以9999号端口搭建,

Socket client = server.accept();


服务器接受 socket 客户端的访问 , 在这里可以写在 while(true) 语句里面,因为,服务器要不断的接受 socket 客户端的访问 , 不能只接受一两个就关闭 。

然后我们看客户端java 怎么帮我们实现, java.net 包里 有个 socket 类,实现的就是 客户端的功能

好 , 我们再写个 客户端
 client = new Socket("localhost", 9999) 


由于是在本机搭建 所以 在 Socket 两个参数的前一个填的是 localhost 这个ip , 大家自己本机的ip也可以 在命令提示符输入 ipconfig 查看


有了客户端和服务器 我们就 可以 传输电流了 ~ 不是 , 传输 信息了 , 其实也就是电流~ 。
经过层层包装,在java里面已经用 io 输入输出流 来表示了, 从socket客户端对象上取到属于它的  inputstream 输入流  和 outputstream 输出流对象, 就可以跟这个客户端通电啦 , 先用服务器跟这个 客户端同个 “电”。

 ServerSocket server = new ServerSocket(9999);
	Socket client = server.accept();
	InputStream is = client.getInputStream();
	OutputStream os = client.getOutputStream();

	byte[] message = "hello".getBytes();
	os.write(message); 


服务端收个电

 void accepectMessage(){
	Socket client = new Socket("localhost", 9999);
	InputStream is = client.getInputStream();
	OutputStream os = client.getOutputStream();
	
		Byte[] acceptMessage = new Byte[50];
	        String message = "";
		for (int i = 0; i < acceptMessage.length; i++) {
			message = message + (char) acceptMessage[i];
		}
		System.out.println(message);
		}
	} 


这里注意几点问题,因为 数据是一个字节一个字节 发送的 , 为什么是一个字节我也不知道,但是大家要记住, 所以 hello 这个 字符串是被拆成 h e l l o 这五个字符的ascii码,一个字母一个字节的形式发送到客户端, 我们暂时先给客户端写了个能装50个字节对象的字节数组,然后将接受过来的一个字节一个字节转成字符 然后再 凑成 字符串 再输出来,然后就能输出 hello 了 。


通信入门至此结束,然后其他通信的内容都是基于 这个 通信的基础 用代码处理出来的。
  • 大小: 34.4 KB
  • 查看图片附件
发表评论
用户名: 匿名