- 浏览: 474196 次
- 性别:
- 来自: 武汉
最新评论
-
zyzyzy123:
请问有工程吗,我现在正在实现打电话的功能,但是一直不通,怀疑是 ...
实用的java 串口通信程序 -
wuhaitong:
引用[img][/img][*][url][/url] ...
jbpm -
迷糊_le:
maven命令, 蛮好的,谢谢
maven eclipse -
Wuaner:
不错的文章 , 谢谢分享!
Hadoop -
yuqihengsheng:
strong 很细
HighLighter
简单的Java Socket通话程序
Java中的网络编程是一个很重要的部分,也是其编程优越性的地方之一。在Java中有一个专门的Java.net类库来管理网络编程的有关方法。
下面先介绍在Java中怎样用socket进行客户与服务器通信。最后再介绍一个一个最简单的通话程序。
1.怎样用socket进行客户与服务器通信
在Java中用socket进行客户/服务器之间的通信编程。Socket是两个实体之间进行通信的有效端点。通过socket可以获得源IP地址和源端口、终点IP地址和终点端口。用户可以将多个socket连入同一个端口,以便对于单个端口可以有多个连接。通过socket客户/服务器编程可以创建一个能被许多人使用的分布式程序,并且所有客户均可以用统一的前端进行工作,并与服务器进行通信。
要想与服务器通信必须具备三个条件:服务器程序、客户程序和连接它们的socket程序。这三个部分缺一不可。但是,客户与服务器之间的通信有很多的方式,其中另一个方法是把客户作为索取者,把服务器作为给予者。下面我们看一看Java的服务器编程。
在Java中,服务器有3个主要的功能:
1.在Java.net类库中通过构造一个ServerSocket类的实例使服务器能够检测到指定端口的信息。用ServerSocke中的accept()方法可以使服务器检测到指定端口的活动。另外,服务器还负责检测要求与它连接的客户。
·Socket类的实例代表客户与服务器连接成功。通过编程可以使多个用户通过同一个端口与服务器相连,其中都是Socket 类的实例。
2.可以分别用Socket类的getInputStream()和getOutStream()方法来发送和捕捉数据。其使用方法如下:
try{
ServerSocket myServerSocket=new ServerSocket(100);
Socket my100Socket=myServerSocket.accept();
}
catch(Exception e){
}
在上面的代码中,首先构造一个ServerSocket类的实例,并传递给它一个整数作为服务器指定可以使用的给定端口,如下:
ServerSocket myServerSocket=new ServerSocket(100);
在Java程序中如果每次构造ServerSocket时都能保持捕捉异常事件,则就随时指定了准备使用的端口。下面的代码使用accept()方法来检测端口的活动。
Socket my100Socket=myServerSocket.accept();
Accept()方法直到接收到用户的连接请求,才继续执行中断的执行程序。一旦客户的连接成功,my100Socket就代表该连接,并且可以发送和接收数据。最后,我们看一看客户是怎样请求连接的。其连接方法如下:
try{
Socket mySocket=new Socket("www.cpcw.com",100);
}
catch(Exception e ){
}
通过上面的代码可能看出,也是通过Socket类来实现的。下面我们通过一个网络编程的实例来说明如何进行网络通信。
2.一个最简单的通话程序
2.1通话器服务器:
import java.net.*;
import java.io.*;
import java.lang.*;
public class myserver{
public static void main(String args[]){
ServerSocket server;
Socket socket;
String s;
InputStream Is;
OutputStream Os;
DataInputStream DIS;
PrintStream PS;
try{
//在端口4321注册服务
server=new ServerSocket(4321);
socket=server.accept(); //监听窗口,等待连接
System.out.println("server ok");
System.out.println("**********************************************");
System.out.println("");
//获得对应Socket的输入/输出流
Is=socket.getInputStream();
Os=socket.getOutputStream();
//建立数据流
DIS=new DataInputStream(Is);
PS=new PrintStream(Os);
DataInputStream in=new DataInputStream(System.in);
while(true){
System.out.println("");
System.out.println("please wait client's message...");
System.out.println("");
s=DIS.readLine(); //读入从client传来的字符串
System.out.println("client said:"+s); //打印字符串
if(s.trim().equals("BYE"))break; //如果是"BYE",就退出
System.out.print("you say:");
s=in.readLine(); //读取用户输入的字符串
PS.println(s); //将读取得字符串传给client
if(s.trim().equals("BYE"))break; //如果是"BYE",就退出
}
//关闭连接
DIS.close(); //关闭数据输入流
PS.close(); //关闭数据输出流
Is.close(); //关闭输入流
Os.close(); //关闭输出流
socket.close(); //关闭sockey
}
catch(Exception e){
System.out.println("Error:"+e);
}
}
}
2.2通话器客户端
import java.net.*;
import java.io.*;
import java.lang.*;
public class myclient{
public static void main(String args[]){
if (args.length<1){ //判断命令加参数没有
System.out.println("you forget the name of the server!");
System.out.println("see also: myclient yxf");
System.exit(1); //如果没加参数就退出
}
Socket socket;
String s="yxfsoft@263.net";
String len;
InputStream Is;
OutputStream Os;
DataInputStream DIS;
PrintStream PS;
try{
//向主机名为args[0]的服务器申请连接
//注意端口号要与服务器保持一致:4321
socket=new Socket(args[0],4321);
System.out.println("client ok");
System.out.println("************************************************");
System.out.println("");
//获得对应socket的输入/输出流
Is=socket.getInputStream();
Os=socket.getOutputStream();
//建立数据流
DIS=new DataInputStream(Is);
PS=new PrintStream(Os);
DataInputStream in=new DataInputStream(System.in);
while(true){
System.out.print("you say:");
s=in.readLine(); //读取用户输入的字符串
PS.println(s); //将读取得字符串传给server
if(s.trim().equals("BYE"))
break; //如果是"BYE",就退出
else{
System.out.println("");
System.out.println("please wait server's message...");
System.out.println("");
}
s=DIS.readLine(); //从服务器获得字符串
System.out.println("server said:"+s); //打印字符串
if(s.trim().equals("BYE"))
break; //如果是"BYE",就退出
}
//关闭连接
DIS.close(); //关闭数据输入流
PS.close(); //关闭数据输出流
Is.close(); //关闭输入流
Os.close(); //关闭输出流
socket.close(); //关闭socket
}
catch(Exception e){
System.out.println("Error:"+e);
}
}
}
Java中的网络编程是一个很重要的部分,也是其编程优越性的地方之一。在Java中有一个专门的Java.net类库来管理网络编程的有关方法。
下面先介绍在Java中怎样用socket进行客户与服务器通信。最后再介绍一个一个最简单的通话程序。
1.怎样用socket进行客户与服务器通信
在Java中用socket进行客户/服务器之间的通信编程。Socket是两个实体之间进行通信的有效端点。通过socket可以获得源IP地址和源端口、终点IP地址和终点端口。用户可以将多个socket连入同一个端口,以便对于单个端口可以有多个连接。通过socket客户/服务器编程可以创建一个能被许多人使用的分布式程序,并且所有客户均可以用统一的前端进行工作,并与服务器进行通信。
要想与服务器通信必须具备三个条件:服务器程序、客户程序和连接它们的socket程序。这三个部分缺一不可。但是,客户与服务器之间的通信有很多的方式,其中另一个方法是把客户作为索取者,把服务器作为给予者。下面我们看一看Java的服务器编程。
在Java中,服务器有3个主要的功能:
1.在Java.net类库中通过构造一个ServerSocket类的实例使服务器能够检测到指定端口的信息。用ServerSocke中的accept()方法可以使服务器检测到指定端口的活动。另外,服务器还负责检测要求与它连接的客户。
·Socket类的实例代表客户与服务器连接成功。通过编程可以使多个用户通过同一个端口与服务器相连,其中都是Socket 类的实例。
2.可以分别用Socket类的getInputStream()和getOutStream()方法来发送和捕捉数据。其使用方法如下:
try{
ServerSocket myServerSocket=new ServerSocket(100);
Socket my100Socket=myServerSocket.accept();
}
catch(Exception e){
}
在上面的代码中,首先构造一个ServerSocket类的实例,并传递给它一个整数作为服务器指定可以使用的给定端口,如下:
ServerSocket myServerSocket=new ServerSocket(100);
在Java程序中如果每次构造ServerSocket时都能保持捕捉异常事件,则就随时指定了准备使用的端口。下面的代码使用accept()方法来检测端口的活动。
Socket my100Socket=myServerSocket.accept();
Accept()方法直到接收到用户的连接请求,才继续执行中断的执行程序。一旦客户的连接成功,my100Socket就代表该连接,并且可以发送和接收数据。最后,我们看一看客户是怎样请求连接的。其连接方法如下:
try{
Socket mySocket=new Socket("www.cpcw.com",100);
}
catch(Exception e ){
}
通过上面的代码可能看出,也是通过Socket类来实现的。下面我们通过一个网络编程的实例来说明如何进行网络通信。
2.一个最简单的通话程序
2.1通话器服务器:
import java.net.*;
import java.io.*;
import java.lang.*;
public class myserver{
public static void main(String args[]){
ServerSocket server;
Socket socket;
String s;
InputStream Is;
OutputStream Os;
DataInputStream DIS;
PrintStream PS;
try{
//在端口4321注册服务
server=new ServerSocket(4321);
socket=server.accept(); //监听窗口,等待连接
System.out.println("server ok");
System.out.println("**********************************************");
System.out.println("");
//获得对应Socket的输入/输出流
Is=socket.getInputStream();
Os=socket.getOutputStream();
//建立数据流
DIS=new DataInputStream(Is);
PS=new PrintStream(Os);
DataInputStream in=new DataInputStream(System.in);
while(true){
System.out.println("");
System.out.println("please wait client's message...");
System.out.println("");
s=DIS.readLine(); //读入从client传来的字符串
System.out.println("client said:"+s); //打印字符串
if(s.trim().equals("BYE"))break; //如果是"BYE",就退出
System.out.print("you say:");
s=in.readLine(); //读取用户输入的字符串
PS.println(s); //将读取得字符串传给client
if(s.trim().equals("BYE"))break; //如果是"BYE",就退出
}
//关闭连接
DIS.close(); //关闭数据输入流
PS.close(); //关闭数据输出流
Is.close(); //关闭输入流
Os.close(); //关闭输出流
socket.close(); //关闭sockey
}
catch(Exception e){
System.out.println("Error:"+e);
}
}
}
2.2通话器客户端
import java.net.*;
import java.io.*;
import java.lang.*;
public class myclient{
public static void main(String args[]){
if (args.length<1){ //判断命令加参数没有
System.out.println("you forget the name of the server!");
System.out.println("see also: myclient yxf");
System.exit(1); //如果没加参数就退出
}
Socket socket;
String s="yxfsoft@263.net";
String len;
InputStream Is;
OutputStream Os;
DataInputStream DIS;
PrintStream PS;
try{
//向主机名为args[0]的服务器申请连接
//注意端口号要与服务器保持一致:4321
socket=new Socket(args[0],4321);
System.out.println("client ok");
System.out.println("************************************************");
System.out.println("");
//获得对应socket的输入/输出流
Is=socket.getInputStream();
Os=socket.getOutputStream();
//建立数据流
DIS=new DataInputStream(Is);
PS=new PrintStream(Os);
DataInputStream in=new DataInputStream(System.in);
while(true){
System.out.print("you say:");
s=in.readLine(); //读取用户输入的字符串
PS.println(s); //将读取得字符串传给server
if(s.trim().equals("BYE"))
break; //如果是"BYE",就退出
else{
System.out.println("");
System.out.println("please wait server's message...");
System.out.println("");
}
s=DIS.readLine(); //从服务器获得字符串
System.out.println("server said:"+s); //打印字符串
if(s.trim().equals("BYE"))
break; //如果是"BYE",就退出
}
//关闭连接
DIS.close(); //关闭数据输入流
PS.close(); //关闭数据输出流
Is.close(); //关闭输入流
Os.close(); //关闭输出流
socket.close(); //关闭socket
}
catch(Exception e){
System.out.println("Error:"+e);
}
}
}
发表评论
-
Apache + Tomcat集群配置详解
2013-10-15 19:57 707Apache + Tomcat集群配置详解 ... -
maven eclipse
2013-06-05 08:41 10581. 安装m2eclipse插件 要用Eclipse构 ... -
ZooKeeper API
2013-05-16 17:27 8881)ZooKeeper API 简介 ZooKeeper ... -
给DIV添加滚动条
2012-08-02 10:51 1102直接为div指定overflow ... -
jboss数据源
2012-03-21 15:19 883jboss.xml in ejb/META-INF ... -
Apache+Jobss cluster安装配置
2012-03-21 11:21 1101系统环境:OS:linux AS4 2.6.9-78.EL A ... -
Spring 事务
2012-02-14 12:26 991Spring 事务不回滚的问题关键是:不能对该异常用 ... -
Apache 负载均衡+Tomcat集群
2012-01-17 08:45 1093一、本机环境 1.Windows 7 64位操作系统 2. ... -
ESB企业服务总线
2011-12-20 15:37 1297ESB是企业服务总线(Ente ... -
定庄记忆法
2011-08-13 10:53 1029桩可以分为大中小三类 ... -
Android开发环境搭建全程演示(jdk+eclip+android sdk)
2011-07-12 13:44 910Android开发环境搭建全程演示(jdk+eclip+a ... -
jbpm
2011-05-17 14:44 2015JBPM_ACTION action记录表 JBPM_DECI ... -
企业信息化十年
2010-12-02 22:06 9212000年之前:宇宙大爆炸 ... -
首先,遍历map有以下方法:
2010-10-22 13:00 1456首先,遍历map有以下方 ... -
职场能力
2010-10-02 17:49 1059如今职场竞争越发激烈,一大群求职者竞聘同一个(或少数几个)岗位 ... -
tomcat 配置
2010-09-24 10:39 9781、 PermGen space的全称是Permanent ... -
YUI:带checkbox的TreeView的赋值与读值
2010-09-18 21:26 2113日前做一个用户权限管理的页面,权限是一个树形结构,每个节点前是 ... -
Spring中的Assert工具类
2010-09-05 21:02 887方法入参检测工具 ... -
comments
2010-09-02 21:25 1113Item Description Comments ... -
tomcat 配置
2010-09-02 06:43 1406Tomcat内存溢出的原因 在生产环境中tomcat内存设置 ...
相关推荐
实现Java Socket聊天多线程编程,图形化界面,多人聊天(群聊),私人聊天,是基于本地模拟的Java聊天程序。 Java Socket聊天程序是我用了三天的时间写出来,用Netbeans建的工程,图形化界面是Netbeans拖拉出来的,...
和大家分享一下,简单的Java socket通信程序代码,希望和大家多沟通交流
一个简单的socket程序,一个服务端对应一个客户端的... 最简单的 入门级..
Java Socket实现网络通话源码程序,Java Socket实现网络通话。
java聊天室程序源码 2 需求分析 2.1 业务需求 1. 与聊天室成员一起聊天。 2. 可以与聊天室成员私聊。 3. 可以改变聊天内容风格。 4. 用户注册(含头像)、登录。 5. 服务器监控聊天内容。 6. 服务器过滤非法内容。 7...
java socket做的通信client端程序
java socket 简单的文件传输程序,只是实现了基本功能而已。
JAVA SOCKET通讯程序
java做的通信程序,实现Server与client的通信。
java socket 通讯例子附有源码 希望还不太理解java socket的原理的朋友,通过这3个简单到复杂的例子有锁帮助。 详细说明请下载。
基于java socket实现的多人聊天程序,分为客户端和服务器端,希望可以对你有帮助
使用Java语言编写的最简单的socket编程程序,实现点对点通讯,多人聊天
Java语言 socket编程 多人聊天室程序,界面
java socket教程java socket教程java socket教程
一个很简易的聊天程序 仅仅支持一对一聊天,适合初学者看,非常简单
java socket client 断线重连的简单实现 有什么意见可以提哦
JAVA Socket教程 Java网络编程之传输控制协议 Socket套接字—Java套接字编程
还不错的小程序,主要是用来和服务器交流的,客户端之间也可以相互交流。主要用了Socket技术
JAVA 聊天程序