转自:http://developer.51cto.com/art/201003/190582.htm

Java Socket编程需要大家详细的学习,有关的技术一直在不断的更新。那么要如何才能掌握好有关的技术更新呢?接下来我们就来学些有关Java Socket编程的相关知识。

  • 关于Java Socket编程的详细介绍
  • 实例教程:Java Socket编程的一个秘密类
  • Java Socket编程关键代码详解
  • Java Socket编程中对于run的使用方法介绍
  • Java Socket编程相关源代码的介绍

事实上网络编程简单的理解就是两台计算机相互通讯数据而已.对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了.Java SDK提供一些相对简单的Api来完成这些工作.Java Socket编程就是其中之一.对于Java而言.这些Api存在与java.net 这个包里面.因此只要导入这个包就可以准备网络编程了.

网络编程的基本模型就是客户机到服务器模型.简单的说就是两个进程之间相互通讯,然后其中一个必须提供一个固定的位置,而另一个则只需要知道这个固定的位置.并去建立两者之间的联系..然后完成数据的通讯就可以了.这里提供固定位置的通常称为服务器,而建立联系的通常叫做客户端.基于这个简单的模型,就可以进入网络编程啦.

Java对这个模型的支持有很多种Api.而这里我只想介绍有关Java Socket编程的编程接口.对于Java而言已经简化了Socket的编程接口.首先我们来讨论有关提供固定位置的服务方是如何建立的.Java提供了ServerSocket来对其进行支持.事实上当你创建该类的一个实力对象并提供一个端口资源你就建立了一个固定位置可以让其他计算机来访问你.ServerSocket server=new ServerSocket(6789);这里稍微要注意的是端口的分配必须是唯一的.因为端口是为了唯一标识每台计算机唯一服务的.另外端口号是从0~65535之间的,前1024个端口已经被Tcp/Ip 作为保留端口,因此你所分配的端口只能是1024个之后的.好了.

我们有了固定位置.现在所需要的就是一根连接线了.该连接线由客户方首先提出要求.因此Java同样提供了一个Java Socket编程对象来对其进行支持.只要客户方创建一个Socket的实例对象进行支持就可以了.Socket client=new Socket(InetAddress.getLocalHost(),5678);客户机必须知道有关服务器的IP地址.对于着一点Java也提供了一个相关的类InetAddress 该对象的实例必须通过它的静态方法来提供.它的静态方法主要提供了得到本机IP 和通过名字或IP直接得到InetAddress的方法.

好了.上面的方法基本可以建立一条连线让两台计算机相互交流了.可是数据是如何传输的呢?事实上I/O操作总是和网络编程息息相关的.因为底层的网络是继续数据的.除非远程调用,处理问题的核心在执行上.否则数据的交互还是依赖于IO操作的.所以你也必须导入java.io这个包.java的IO操作也不复杂.它提供了针对于字节流和Unicode的读者和写者,然后也提供了一个缓冲用于数据的读写.

  1. BufferedReader in=new BufferedReader(new InputStream
    Reader(server.getInputStream()));
  2. PrintWriter out=new PrintWriter(server.getOutputStream());

上面两句就是建立缓冲并把原始的字节流转变为Unicode可以操作.而原始的字节流来源于Java Socket编程的两个方法.getInputStream()和getOutputStream()方.分别用来得到输入和输出.那么现在有了基本的模型和基本的操作工具.我们可以做一个简单的Socket例程了.

服务方:

 1 import java.io.*;
 2 import java.net.*;
 3 public class MyServer {
 4 public static void main(String[] args) throws IOException{
 5 ServerSocket server=new ServerSocket(5678);
 6 Socket client=server.accept();
 7 BufferedReader in=new BufferedReader(new InputStreamReader
 8 (client.getInputStream()));
 9 PrintWriter out=new PrintWriter(client.getOutputStream());
10 while(true){
11 String str=in.readLine();
12 System.out.println(str);
13 out.println("has receive....");
14 out.flush();
15 if(str.equals("end"))
16 break;
17 }
18 client.close();
19 }
20 }  

这个Java Socket编程的主要目的在于服务器不断接收客户机所写入的信息只到.客户机发送"End"字符串就退出程序.并且服务器也会做出"Receive"为回应.告知客户机已接收到消息。

转载于:https://www.cnblogs.com/sharpest/p/10054555.html

Java Socket编程如何建立两者关系相关推荐

  1. JAVA socket编程 Datagram套接字 UDP协议(转)

      查看文章     JAVA socket编程 Datagram套接字 UDP协议 2009-05-13 09:35 1 UDP套接字 数据报(Datagram)是网络层数据单元在介质上传输信息的一 ...

  2. linux java socket编程_深入学习socket网络编程,以java语言为例

    了解java的socket编程与Linux Socket API之间的关系 一.java的网络编程 1.socket原理 socket通信就是通过IP和端口号将两台主机建立连接,提供通信.主机A的应用 ...

  3. Java Socket编程----通信是这样炼成的

    转载自 Java Socket编程----通信是这样炼成的 Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socke ...

  4. Java Socket编程详解

    Java Socket编程是Java网络编程很重要的内容,现参考了许多资料,总结如下: 1. Java网络编程原理+Socket编程 http://www.cnblogs.com/linzheng/a ...

  5. tcp java实例_实现了基于TCP的Java Socket编程实例代码

    实现了基于TCP的Java Socket编程,功能很简单:客户端向服务器端输出一名话"connect",服务器端接收输出到控制台并向客户端输出一名话"Hello" ...

  6. 用JAVA SOCKET编程,读服务器几个字符,再写入本地显示

    Server: package cn.itcast.framework.socket;import java.io.BufferedReader; import java.io.IOException ...

  7. java socket 编程 客户机服务器_Java Socket编程服务器响应客户端实例代码

    通过输入流来读取客户端信息,相应的时候通过输出流来实现. 服务端类的代码: import java.io.BufferedReader; import java.io.IOException; imp ...

  8. java socket编程心跳_Java Socket编程心跳包创建实例解析

    1.什么是心跳包? 心跳包就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包. 用来判断对方(设备,进程或其它网元)是否正常运行,采用 ...

  9. Java Socket编程 - 基于TCP方式的二进制文件传输【转】http://blog.csdn.net/jia20003/article/details/8248221...

    此人博客挺好的,推荐一个! 一个基于Java Socket协议之上文件传输的完整示例,基于TCP通信完成. 除了基于TCP的二进制文件传输,还演示了JAVA Swing的一些编程技巧,Demo程序 实 ...

最新文章

  1. 多备份cloud 5技术:传统数据备份思路的完美移植
  2. RMAN异机复制数据库(相同路径)
  3. Regarding empty field check in business document save
  4. java如何arraylist_Java如何使用ArrayList类?
  5. NLog源码解读——StringBuilderPool
  6. Jekins持续集成在ERP研发中的应用实践
  7. FMStocks7 , 不错的一个.NET 示例程序
  8. Spark in action on Kubernetes - Playground搭建与架构浅析
  9. 企业为什么要建设数据分析平台?应该怎么建?
  10. JAVA显示子类num值_JavaSE8基础 子类中的成员变量与父类重名 简单示例
  11. 用 as with ,和 ROW_NUMBER() 做分页查询
  12. AE脚本-关键帧复制粘贴对齐镜像拉伸调节控制工具 Keystone
  13. 【无标题】半导体器件特性曲线测试方法的研究
  14. js获取不同时区时间
  15. 历史论文比赛TCR介绍
  16. 2017年十本必读的大数据人工智能领域书籍,你都读过吗?
  17. 台积电、高通“示好”华为:恢复供货?
  18. R语言中的表达式函数
  19. 云队友丨字节跳动的失意版图
  20. CSDN博客运营团队2022年H2总结

热门文章

  1. initrd.img解压和压缩
  2. 1660s功耗多少w_1660显卡要多大电源?GTX1660用多大电源合适
  3. vim匹配特定的行并删除
  4. vim将修改内容复制多次
  5. Variable W already exists, disallowed. Did you mean to set reuse=True or reuse=tf.AUTO_REUSE……
  6. 自动生成文章的html,文章自动更新工具|自动生成文件|自动伪原创|文章自动插入关键词工具...
  7. 倾斜模型精细化处理_推荐一款好用的倾斜摄影精细化单体建模软件——OSketch...
  8. 怎么连接屏幕_触控一体机怎么实现无线投屏功能
  9. ajax得到session,Ajax如何使用Session
  10. 二十年后我发明了保姆机器人作文_五年级作文:二十年后的家乡(张羽彤)