事实上网络编程简单的理解就是两台计算机相互通讯数据而已。对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了。java sdk提供一些相对简单的api来完成这些工作,socket就是其中之一。
webjx.com
对于java而言。这些api存在与java.net这个包里面。因此只要导入这个包就可以准备网络编程了。网络编程的基本模型就是客户机到服务器模型。简单的说就是两个进程之间相互通讯,然后其中一个必须提供一个固定的位置,而另一个则只需要知道这个固定的位置,并去建立两者之间的联系。然后完成数据的通讯就可以了。这里提供固定位置的通常称为服务器,而建立联系的通常叫做客户端。基于这个简单的模型,就可以进入网络编程。
java对这个模型的支持有很多种api.而这里我只想介绍有关socket的编程接口。对于java而言已经简化了socket的编程接口。首先我们来讨论有关提供固定位置的服务方是如何建立的。java提供了serversocket来对其进行支持。事实上当你创建该类的一个实力对象并提供一个端口资源你就建立了一个固定位置可以让其他计算机来访问你。
serversocket server=new serversocket(6789);
这里稍微要注意的是端口的分配必须是唯一的。因为端口是为了唯一标识每台计算机唯一服务的。另外端口号是从0~65535之间的,前1024个端口已经被tcp/ip 作为保留端口,因此你所分配的端口只能是1024个之后的。 网页教学网
好了。我们有了固定位置。现在所需要的就是一根连接线了。该连接线由客户方首先提出要求。因此java同样提供了一个socket对象来对其进行支持。只要客户方创建一个socket的实例对象进行支持就可以了。
socket client=new socket(inetaddress.getlocalhost(),5678);
webjx.com
客户机必须知道有关服务器的ip地址。对于着一点java也提供了一个相关的类inetaddress 该对象的实例必须通过它的静态方法来提供。它的静态方法主要提供了得到本机ip 和通过名字或ip直接得到inetaddress的方法。
好了,上面的方法基本可以建立一条连线让两台计算机相互交流了。可是数据是如何传输的呢?事实上i/o操作总是和网络编程息息相关的。因为底层的网络是继续数据的。除非远程调用,处理问题的核心在执行上。
否则数据的交互还是依赖于io操作的。所以你也必须导入java.io这个包。java的io操作也不复杂。它提供了针对于字节流和unicode的读者和写者,然后也提供了一个缓冲用于数据的读写。 网页教学网
bufferedreader in=new bufferedreader(new inputstreamreader(server.getinputstream()));
printwriter out=new printwriter(server.getoutputstream());
上面两句就是建立缓冲并把原始的字节流转变为unicode可以操作。而原始的字节流来源于socket的两个方法,getinputstream()和getoutputstream()方,分别用来得到输入和输出。那么现在有了基本的模型和基本的操作工具,我们可以做一个简单的socket例程了服务方:
import java。io。*;
import java。net。*;
public class myserver
{
public static void main
(string[] args) throws ioexception
{
serversocket server=new
serversocket(5678);
socket client=server.accept();
bufferedreader
in=new bufferedreader(new
inputstreamreader
(client.getinputstream()));
printwriter out=new
printwriter(client.getoutputstream());
while(true)
{
string str=in.readline();
system.out.println(str);
out.println("has receive...");
out.flush();
if(str.equals("end"))
break;
}
client。close();
}
}
这个程序的主要目的在于服务器不断接收客户机所写入的信息只到。客户机发送"end"字符串就退出程序。并且服务器也会做出"receive"为回应。告知客户机已接收到消息。客户机代码
import java.net.*;
import java.io.*;
public class client{
static socket server;
public static void
main(string[] args)
throws exception
{
server=new socket
(inetaddress.getlocalhost(),5678);
bufferedreader in=new bufferedreader(new
inputstreamreader(server。getinputstream()));
printwriter out=new
printwriter(server.getoutputstream());
bufferedreader wt=new bufferedreader(new
inputstreamreader(system.in));
while(true)
{
string str=wt.readline();
out.println(str);
out.flush();
if(str.equals("end"))
{
break;
}
system.out.println(in.readline());
}
server.close();
}
} webjx.com
本文来自:网页教学网()原文链接:
- 2008-11-29 18:12
- 浏览 1803
- 评论(0)
相关推荐
这是一个java的socket编程,简易实现了server和client的对话,由client发出请求,server返回服务器时间 纯粹练习作用
在这篇文章中我们将介绍套接字(socket)慨念,同时以实例说明如何使用network api操纵套接字,在完成本文后,你就可以编写网络低端通讯软件。 什么是套接字(socket)? network api是典型的用于基于tcp/ip网络...
用java开发网络软件非常方便和强大,java的这种力量来源于他独有的一套...在这篇文章中我们将介绍套接字(socket)慨念,同时以实例说明如何使用network api操纵套接字,在完成本文后,你就可以编写网络低端通讯软件。
三、java语言基础教程-java nio流篇 [第1节] java nio流-简介和概述.flv [第2节] java nio流-缓冲区.flv [第3节] java nio流-缓冲区操作.flv [第4节] javanio流-通道1.flv [第5节] java nio流-通道2.flv [第6...
java编程老鸟潜心写作,奉献高效率的java学习心得 完全站在没有编程经验读者的角度,手把手教会读者学习java 配16小时多媒体教学视频,高效、直观 一一击破java入门可能会遇到的难点和疑惑 抽丝剥茧,层层推进,让...
《由浅入深学java:基础、进阶与必做260题》共分为4篇共28章,第1篇从最基本的jdk安装讲起,包括基本语法与数据类型、数组、字符串、程序控制语句、面向对象编程、继承、多态、接口等内容;第2篇讲解了图形界面开发...
[14本经典android开发教程]-7-...10个c#socket编程代码示例 http://download.csdn.net/album/detail/631 6份gdi 程序设计资源整合[全零分] http://download.csdn.net/album/detail/625 2014年移动游戏行业数据分析 ...
本书讲解了java方方面面的知识,全书共分为4篇共28章,第1篇从最基本的jdk安装讲起,包括基本语法与数据类型、数组、字符串、程序控制语句、面向对象编程、继承、多态、接口等内容;第2篇讲解了图形界面开发基础、...
内容简介 本书讲解了java方方面面的知识,全书共分为4篇共28章,第1篇从*基本的jdk安装讲起,包 括基本语法与数据类型、数组、字符串、程序控制语句、面向对象编程、继承、多态、接口等内容;第2 篇讲解了图形界面...
《由浅入深学java:基础、进阶与必做260题》共分为4篇共28章,第1篇从最基本的jdk安装讲起,包括基本语法与数据类型、数组、字符串、程序控制语句、面向对象编程、继承、多态、接口等内容;第2篇讲解了图形界面开发...
java编程老鸟潜心写作,奉献高效率的java学习心得 完全站在没有编程经验读者的角度,手把手教会读者学习java 配16小时多媒体教学视频,高效、直观 一一击破java入门可能会遇到的难点和疑惑 抽丝剥茧,层层推进,让...
因为这个问题,我学习了一下在firefox addon中使用socket监听我的java请求,然后由我自己来调用firefox的tabs api进行tab页的管理。有兴趣的朋友可以看下! 首先要熟悉几个socket相关的核心xpcom组件 ...
第一篇 基础篇 第1章 java简介(精彩视频:33分钟) 21 1.1 java的平台简介 21 1.2 安装工具包 22 1.2.1 下载jdk 22 1.2.2 安装jdk 24 1.2.3 查看与设置环境变量 25 1.2.4 jdk常用命令 27 1.2.5 java各个目录含义 28...
"java大数据培训学校全套教材"系列课程由750集视频构成,基本就 是1)时下流行的java培训学校主流... 本门课程为"java大数据培训学校全套教材"系列课程的第十篇,学习tcp,udp,url类让大家对socket编程打下好的基础。
在这儿之后,你可以选择向j2me、或者java gui、socket编程等方向努力,但是通过第一篇的办法,你可以很容易就将这方向过滤掉(永远不要忘了我们是为了就业),好吧,暂时和它们诀别,还是向着j2ee的方向前进吧。...
第一篇 基础篇 第0章 jdk安装和最简单的环境变量配置方法 第1章 java基础概念 一、 java基础语法 1、helloworld.java 2、标识符 3、关键字 4、常量 5、变量 6、语句 6.1 if语句和switch语句 6.1.2 if语句举例 ...
第1篇 java编程基础 第1章 java开发环境的搭建(教学视频:9分钟) 2 1.1 理解java 2 1.2 搭建java所需环境 3 1.2.1 下载jdk 3 1.2.2 安装jdk 4 1.2.3 配置环境 5 1.2.4 测试jdk配置是否成功 7...
java 基于tcp协议的socket编程和通信.doc java面试高级篇—说说tcp,udp和socket,http之间联系和区别.doc mysql千万级的大表要怎么优化(读写分离、水平拆分、垂直拆分).doc redis缓存雪崩、缓存穿透、缓存预热、...
[14本经典android开发教程]-12...10个c#socket编程代码示例 http://download.csdn.net/album/detail/631 6份gdi 程序设计资源整合[全零分] http://download.csdn.net/album/detail/625 2014年移动游戏行业数据分析 ...