Java中有关单向通信的实例代码详解

这篇文章主要介绍了Java网络编程里通过套接字实现单向通信的方法及相关实例,属于网络编程入门程序,虽然简单,但具有一定参考价值,需要的朋友可以参考下。

在网络编程中如果只要求客户机向服务器发送消息,不要求服务器向客户机发送消息,称为单线通信。客户机套接字和服务器套接字链接成功后,可估计通过输出流发送数据,服务器则通过输入流接受数据,下面是简单的单向通信的例子。

实例1:本实例是一个TCP服务器端程序,在 getserver() 方法中建立服务器套接字,调用getClienMessage()方法获取客户端信息。代码如下:

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.ServerSocket;import java.net.Socket;public class MyTcp {private BufferedReader reader;private ServerSocket server;private Socket socket;void getserver() {try {server = new ServerSocket(8998);System.out.println("服务器套接字已经创建成功");while(true) {System.out.println("等待客户机的连接");socket = server.accept();reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));getClienMessage();}}catch(Exception e) {e.printStackTrace();}}private void getClienMessage() {try {while (true) {System.out.println("客户机:"+ reader.readLine());}}catch(Exception e) {e.printStackTrace();}try {if(reader !=null) {reader.close();}if(socket !=null) {socket.close();}}catch(IOException e) {e.printStackTrace();}}public static void main(String[] args) {MyTcp tcp = new MyTcp();tcp.getserver();}}

运行结果:

服务器套接字已经创建成功等待客户机的连接

下面我们再来看一下客户端程序。

实例2:客户端程序,实现将用户在文本框输入的信息发送到服务器端,并将文本框中输入的信息显示在客户端的文本域中。代码如下:

import java.awt.BorderLayout;import java.awt.Container;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.PrintWriter;import java.net.Socket;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.border.BevelBorder;public class MyClien extends JFrame{private PrintWriter writer;Socket socket;private JTextArea ta = new JTextArea();private JTextField tf = new JTextField();Container cc;public MyClien(String title) {super(title);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);cc = this.getContentPane();final JScrollPane scrollPane = new JScrollPane();scrollPane.setBorder(new BevelBorder(BevelBorder.RAISED));getContentPane().add(scrollPane, BorderLayout.CENTER);scrollPane.setViewportView(ta);cc.add(tf,"South");tf.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {writer.println(tf.getText());ta.append(tf.getText()+ '\n');ta.setSelectionEnd(ta.getText().length());tf.setText("");}});}private void connect() {ta.append("尝试连接\n");try {socket = new Socket("127.0.0.1",8998);writer = new PrintWriter(socket.getOutputStream(),true);ta.append("完成连接\n");}catch(Exception e) {e.printStackTrace();}}public static void main(String[] args) {MyClien clien = new MyClien("向服务器传送数据");clien.setSize(200,200);clien.setVisible(true);clien.connect();}}

服务器端运行结果:

服务器套接字已经创建成功等待客户机的连接客户机:革命尚未成功,同志仍需努力!

客户端运行结果:

尝试连接完成连接革命尚未成功,同志仍需努力!

说明:

当一台机器上安装了多个网络应用程序,很可能指定的端口号已被占用。还可能遇到以前运行良好的网络程序突然运行不了的情况,这种情况很可能也是由于端口被别的程序占用了。此时使用命令 netstat -an 来查看该程序所使用的端口。

在这里还有很重要的一点,本文所述两份源码,一个是服务器端程序,一个是客户端程序。运行时一定要先运行服务器端程序,然后运行客户端程序,而且两段代码的端口号一定要相同。

以上就是Java中有关单向通信的实例代码详解的详细内容,更多请关注其它相关文章!

哪里会顾得上这些。等到时间将矛盾一层层降解为流言是非误解过结

Java中有关单向通信的实例代码详解

相关文章:

你感兴趣的文章:

标签云: