当前位置:  技术问答>java相关

两个对你来说可能不是问题的问题。

    来源: 互联网  发布时间:2015-07-24

    本文导语:  1。谁能给我一个JAVA做的SOCKET通讯的程序,要CLIENT和SERVER两个。 2。怎么JAVA里面调用VC写的COM???这个问题我问了好长时间了,分都快花了1000了,就是没有人给我例子,或是我太笨了,不能理解提示,希望大家能给...

1。谁能给我一个JAVA做的SOCKET通讯的程序,要CLIENT和SERVER两个。
2。怎么JAVA里面调用VC写的COM???这个问题我问了好长时间了,分都快花了1000了,就是没有人给我例子,或是我太笨了,不能理解提示,希望大家能给个例子,或者是详细的解答一下,不胜感激。

|
1、这个很简单,下面我会给一个完全的例子给你
2、这方面我就无能为力了,我对COM一点都不了解的说

Java中的网络编程是一个很重要的部分,也是其编程优越性的地方之一。在Java中有一个专门的Java.net类库来管理网络编程的有关方法。 
  下面先介绍在Java中怎样用socket进行客户与服务器通信。最后再介绍一个一个最简单的通话程序。 
一.怎样用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类来实现的。下面我们通过一个网络编程的实例来说明如何进行网络通信。 

二.一个最简单的通话程序 

通话器服务器: 
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); 





通话器客户端 
import java.net.*; 
import java.io.*; 
import java.lang.*; 

public class myclient{ 
public static void main(String args[]){ 
if (args.length0) 


inb=in.read(); 
inc[n]=(byte)inb; 
n++; 


inputs.setLength(0); 
inputs.append(new String(inc)); 
cmds=inputs.toString().toLowerCase().trim(); 
/* System.out.println(cmds); 
out.write(inc); 
out.write("输入OK".getBytes()); 
out.write(13); //回车 
out.write(10); //换行 
*/ 
if (cmds.equals("exit") ) 

System.out.println("clent is input exit"); 
todo=false; 
break; 


if (cmds.length()>4) //dir 

if (cmds.substring(0,4).equals("dir ") ) 

cmddir(cmds.substring(4,cmds.length()) ); 
continue; 



if (cmds.length()>5) //view 

if (cmds.substring(0,5).equals("view ") ) 


out.write(cmdview(cmds.substring(5,cmds.length())).getBytes()); 
out.write(13); //回车 
out.write(10); //换行 
out.flush(); 
continue; 




if ( cmds.equals("help") || cmds.equals("?")) 

out.write("?".getBytes()); 
out.write(13); //回车 
out.write(10); //换行 

out.write("help".getBytes()); 
out.write(13); //回车 
out.write(10); //换行 
out.write("dir path name ".getBytes()); 
out.write(13); //回车 
out.write(10); //换行 
out.write("view path and file name".getBytes()); 
out.write(13); //回车 
out.write(10); //换行 
out.flush(); 
continue; 

out.write("Bad command ".getBytes()); 
out.write(13); //回车 
out.write(10); //换行 

else { 
todo=false; 
System.out.println("clent is err close"); 



in.close(); 
out.close(); 
client.close(); 
// System.out.println(in.read()); 

catch ( IOException e) { 
System.out.println("server accept error"); 
try 

in.close(); 
out.close(); 
client.close(); 

catch (IOException ee) 





private int cmddir (String cmdsin) // dir 命令的处理 -1是对方关服务器,0为正常,1 为IOException e 


String dirs=cmdsin; 
try{ 
try 

File dir=new File(dirs); 
String listing[]=dir.list(); 
for( int i=0;i { 
out.write(listing[i].getBytes()); 
out.write(13); //回车 
out.write(10); //换行 


catch (NullPointerException e) 

out.write("this no".getBytes()); 
out.write(13); //回车 
out.write(10); //换行 



catch ( IOException e) {return 1; } 
return 0; 



private String cmdview(String cmdsin) 
// view 命令的处理 -1是对方关服务器,0为正常,1 为IOException e 

String filenames=cmdsin; 
FileInputStream outfi; 
File file=new File(filenames); 
if (!file.isFile()) 


return "this is file can`t find "; 

if (!file.canRead()) 


return "this is file can`t read "; 

try {outfi=new FileInputStream(file); } 
catch (FileNotFoundException e) {return "file open erro";} 
try 

byte outfib[]=new byte[outfi.available()]; 
outfi.read(outfib); 

String conns=new String(outfib); 
return conns; 

catch (IOException e) 

return "Io error"; 




 
   

|
2。去看看java-bridge的介绍,这个是java桥,专门用来连接非java程序或com,
我比较喜欢weblogic的jcom,功能非常强大。

1。这个无能为力,我一直觉得什么事可以问别人但不能抄袭。

|
焦急关注中....

|
关注!!

|
2。如果是.exe的文件可以用
try
{
   String command = "notepad.exe";
   Process child = Runtime.getRuntime().exec(command);
}
catch(IOExceptin ex){}

java里的com其实应该是javabean形势的

    
 
 

您可能感兴趣的文章:

  • cocos2d中CCSpriteFrameCache文件同时存在两个plist的问题解决
  • 基础问题,刚学的!请教,两个日期格式变量,我要求两个日期之间的天数,怎么求?
  • 分别有两个linux系统的两个硬盘接在一台机器上,由其中一个硬盘启动,有问题,大家来看看
  • 请教两个小问题:一个cgywin下使用vi的问题,另一个socket的问题
  • 两个链接库中函数同名的问题
  • socket问题两个
  • 关于一个局域网内有两个DHCP,两个DNS 服务器 的问题!
  • 请教两个小问题!
  • 关于sendmail接收两个完全不同域名邮件的问题
  • 请问两个简单问题?
  • java 基础:两个类之间的联系问题
  • 不好意思,求教两个简单问题。
  • SCO系统的两个问题?????
  • 关于FreeBSD的两个问题
  • 请教两个redhat9问题
  • 请教两个比较初级的问题
  • 请问两个以上用户同时读一个文件的问题。谢谢!
  • Linux使用中的两个问题???
  • 很菜的问题关于两个dialog只能操作其中的一个
  • 有两个问题请教大家。
  • 两个硬盘的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问两个JAVA问题,一个很浅、一个可能很深
  • 两个可能与jdk版本有关的问题,请大家帮忙。
  • 请问有没有可能在毫无相干的两个进程间使用pipe?
  • 我使用一个递归 mutex,因为一个可能会连续锁定它两次 ,在PC机上的x86gcc可以,但ARMGCC就不行,两个版本一样。
  • C++ MultiMaps 成员 swap():交换两个multimaps
  • 急!有两个char buf[]里面是两个日期(2004-08-02),怎样判断两个日期之间的天数?(只能用标准C)
  • C++ Lists(链表) 成员 merge():合并两个list
  • 一个Statement不能同时打开两个ResultSet?为了同时打开两个,可以考虑建立两个Statement?甚至两个Connection?
  • C++ Lists(链表) 成员 swap():交换两个list
  • HTML教程 iis7站长之家
  • C++ Maps 成员 swap():交换两个map
  • 可以有其他两个类的实例同时调用一个java实例的两个方法吗?
  • C++ Vectors 成员 swap():交换两个Vector
  • 两个域名,两个端口,一个服务器……
  • C++ Lists(链表) 成员 splice():合并两个list
  • 你们看是不是可以这样理解:在用来进行两个对象的比较时,==操作符用来比较两个对象的引用地址,而equals()用来比较两个对象的值。
  • C++ Strings(字符串) 成员 swap():交换两个字符串的内容
  • 下载了jbuilder5,是rar格式的,解开后有两个文件,一个是rsc-jb5.bin,一个是rsc-jb5.cue,据说这两个文件是刻光盘的,请问谁知道怎么刻?不会用这两个文件直接安装吧?谢谢!
  • C++ Strings(字符串) 成员 compare():比较两个字符串
  • 主进程有两个线程,fork子进程后复制主进程两个线程的内存么?
  • 我机器上安装了linux和win2000两个系统,请问如何在两个系统之间切换。
  • linux字符模式下怎样可以运行两个任务(开两个终端)
  • 听说,初学JAVA有两个开源程序是必看的,请问是哪两个。在那里下载?
  • 由同一个服务端创建两个线程分别向两个客户端同时发送不同的数据···
  • 一个进程创建了两个线程,如何使得当任何一个线程(比如线程a)结束时,同时也结束线程b,也就是使两个线程一起死掉,怎么办呢?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3