「java网络通信程序」java通信编程

博主:adminadmin 2022-11-21 16:13:05 75

今天给各位分享java网络通信程序的知识,其中也会对java通信编程进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

如何使用JAVA编写网络通信程序

使用JAVA来进行网络编程

1)

由于客户端通过IE同服务器建立联系,所以客户端使用Applet,服务器端使用Application;

2)

服务器应设置成多线程,应答多个客户的请求;

3)

两端通信使用SOCKET机制。

2.2客户机/服务器通信的动机

客户机-服务器范例的基本动机来自聚集问题。

为了理解这一问题,设想一个人试图在分离的机器上启动两个程序并让它们进行通

信,还要记住,计算机的运行要比人的速度快许多数量级。在某人启动第一个程序后,

该程序开始执行并向其对等程序发送消息,在几个微妙内,它便发现对等程序还不存在,

于是就发出一条错误消息,然后退出。在这时,某个人启动了第二个程序,不幸的是,当第二个程序开始执行时,它发现对等程序已经终止执行了,即便是两个程序连续重新试着通信,

但由于它们每个程序执行的速度那么快。因而它们

在同一瞬间向对方发送消息的概率是很低的。

客户机-服务器模型是这样解决这种聚集问题的。它要求在任何一对进行通信的应用进程中,有一方必须在启动执行后(无限期地)等待对方的联系,这种解决方案是重要的,因为TCP/IP自己对入呼叫通信是不会响应的。

由于TCP/IP并不是提供在一个报文到达后自动创建运行程序的任何机制,因此一个程序必须在任一请求到来前就在那里等待以接受通信。

因此,为确保计算机已准备好了进行通信,多数系统管理员都安排通信程序在操作系统引导时就自动启动。每个程序都一直运行下去,以便等待下一个服务请求的到来(此服务是该程序提供的)

望采纳!!!

「java网络通信程序」java通信编程

如何用java实现一个简单网络通信过程

你说的我明白。如果真正使用alohal协议的时候,所有的机器都可以检测网络电平变化的是吧?但是使用Java编写模拟程序的话,我们并不能可能检测电平的变换,只能通过一定的手段来模拟这个过程。如果你将一个包裹群发,这样所有的机器都可以接受这个包,这样就可以做到所有机器模拟检测电平变化的这个要求。我认为这个是最有说服力的模拟方法了。

线程需要使用Thread类型,重写里面的run函数,调用start()启动线程,具体可以搜索一把Thread,例子遍地都是。

UDP协议使用Socket类型,初始化的时候参数里面绑定(或者初始化好以后直接调用bind绑定端口,一般输出不用绑定,监听的时候需要绑定)。调用里面的getOutputStream得到输入流。调用getInputStream得到输入流。

OutputStream:输出流,用于向网络中输出数据。调用其中的write函数进行输出,函数的参数就是输出的byte数组。

InputStream: 输入流,用于接受网络里面的数据。调用其中的read可以得到输入的包。

String:你要输出的字符串,调用里面的getBytes可以得到String的byte数组。

其它的应该用不到什么了吧。

**********************************

1.发送字符串的话用byte[]就可以啊。用Socket类里面的getOutputStream可以获得一个发送数据的OutputStream类对象。这个类对象有一个函数write(byte[] b) 可以向网络写byte[]。一个字符串可以通过String类中的getBytes() 转化成byte[]。这样总该明白了吧

2.说一下我的思路:开一个端口A发送UDP包(广播给端口B),用于模拟发送,用一个线程(线程1)来跑。开端口B接受局域网内的包,用另外一个线程(线程2)来跑。在发送UDP包的时候,将变量mark置1,发送完置0。线程2如果接受到一个不是从本机发送的包,而且此时mark是1(说明本机和另外一个机器同时在发包),发生了冲突,表示线程1这次发送的包失败。

java网络编程应该怎样在客户端和服务器间实现通信?

以前写的,照贴了。。。服务器端:import java.awt.*;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.io.*;

import java.net.*;/*6、 采用UDP协议,编写一个Java网络应用程序,该应用分服务器端程序和客户端程序两部分。

* 客户端指定一个服务器上的文件名,让服务器发回该文件的内容,或者提示文件不存在。

* (20分)(服务端程序和客户端程序分别命名为Server.java和Client.java)*/

public class N4BT6 extends Frame

{

DatagramSocket socket ;

DatagramPacket packet ;byte[] buf ;

File file ;

FileInputStream input;

String message = "该文件不存在";

TextArea text;

public N4BT6(String title)

{

super(title);

text = new TextArea(6,4);

add(text);

setSize(400, 300);

setVisible(true);

addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

dispose();

}

});

buf = new byte[1024];

try

{

socket = new DatagramSocket(1230);

packet = new DatagramPacket(buf, buf.length);

socket.receive(packet);

file = new File(new String(packet.getData()));

socket = new DatagramSocket();

}

catch (Exception e)

{e.printStackTrace();

}

if(file.exists())

{

try

{

buf = new byte[(int)file.length()];

packet = new DatagramPacket(buf,buf.length,InetAddress.getLocalHost(),1234);

input = new FileInputStream(file);

input.read(buf);

socket.send(packet);

}

catch (IOException e)

{

e.printStackTrace();

}

}

else

{

try

{

packet = new DatagramPacket(message.getBytes(),message.getBytes().length,

InetAddress.getLocalHost(),1234);

socket.send(packet);

}

catch (Exception e)

{

e.printStackTrace();

}

}

}

public static void main(String[] args)

{

new N4BT6("Server");

}

}

客户端:import java.awt.*;

import java.awt.event.*;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;public class N4BT6_2 extends Frame

{

TextArea text;

String message = "Q.txt";

DatagramSocket socket ;

DatagramPacket packet;

byte[] buf;

public N4BT6_2(String title)

{

super(title);

text = new TextArea(6,4);

add(text);

setSize(400, 300);

setVisible(true);

addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

dispose();

}

});

try

{

socket = new DatagramSocket();

packet = new DatagramPacket(message.getBytes(),message.getBytes().length,

InetAddress.getLocalHost(),1230);

socket.send(packet);

}

catch (Exception e)

{

e.printStackTrace();

}

try

{

buf = new byte[1024];

socket = new DatagramSocket(1234);

packet = new DatagramPacket(buf,buf.length);

socket.receive(packet);

text.append(new String(buf));

}

catch (Exception e)

{

e.printStackTrace();

}

}

public static void main(String[] args)

{

new N4BT6_2("Client");

}

}

关于java网络通信程序和java通信编程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-21,除非注明,否则均为首码项目网原创文章,转载请注明出处。