欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java網(wǎng)絡編程基礎篇之單向通信 原創(chuàng)

原創(chuàng)  更新時間:2017年09月06日 15:52:49   原創(chuàng) 作者:司機  
這篇文章主要介紹了Java網(wǎng)絡編程里通過套接字實現(xiàn)單向通信的方法及相關實例,屬于網(wǎng)絡編程入門程序,雖然簡單,但具有一定參考價值,需要的朋友可以參考下。

        在網(wǎng)絡編程中如果只要求客戶機向服務器發(fā)送消息,不要求服務器向客戶機發(fā)送消息,稱為單線通信??蛻魴C套接字和服務器套接字鏈接成功后,可估計通過輸出流發(fā)送數(shù)據(jù),服務器則通過輸入流接受數(shù)據(jù),下面是簡單的單向通信的例子。

        實例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("服務器套接字已經(jīng)創(chuàng)建成功");
			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();
	}
}

運行結果:

服務器套接字已經(jīng)創(chuàng)建成功
等待客戶機的連接

        下面我們再來看一下客戶端程序。

        實例2:客戶端程序,實現(xiàn)將用戶在文本框輸入的信息發(fā)送到服務器端,并將文本框中輸入的信息顯示在客戶端的文本域中。代碼如下:

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("向服務器傳送數(shù)據(jù)");
			clien.setSize(200,200);
			clien.setVisible(true);
			clien.connect();
		}
	}

服務器端運行結果:

服務器套接字已經(jīng)創(chuàng)建成功
等待客戶機的連接
客戶機:革命尚未成功,同志仍需努力!

客戶端運行結果:

嘗試連接
完成連接
革命尚未成功,同志仍需努力!

說明:

        當一臺機器上安裝了多個網(wǎng)絡應用程序,很可能指定的端口號已被占用。還可能遇到以前運行良好的網(wǎng)絡程序突然運行不了的情況,這種情況很可能也是由于端口被別的程序占用了。此時使用命令 netstat -an 來查看該程序所使用的端口。

        在這里還有很重要的一點,本文所述兩份源碼,一個是服務器端程序,一個是客戶端程序。運行時一定要先運行服務器端程序,然后運行客戶端程序,而且兩段代碼的端口號一定要相同。

        以上就是本文的全部內容,真心希望對大家有所幫助。學習是一件任重道遠的事情,那句老話說得好:革命尚未成功,同志仍需努力!

        感謝大家對本站的支持。

相關文章

  • Java?精煉解讀數(shù)據(jù)結構的鏈表的概念與實現(xiàn)

    Java?精煉解讀數(shù)據(jù)結構的鏈表的概念與實現(xiàn)

    鏈表是一種物理存儲單元上非連續(xù)、非順序的存儲結構,數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針連接次序實現(xiàn)的,每一個鏈表都包含多個節(jié)點,節(jié)點又包含兩個部分,一個是數(shù)據(jù)域,一個是引用域
    2022-03-03
  • 基于Springboot2.3訪問本地路徑下靜態(tài)資源的方法(解決報錯:Not allowed to load local resource)

    基于Springboot2.3訪問本地路徑下靜態(tài)資源的方法(解決報錯:Not allowed to load local

    這篇文章主要介紹了基于Springboot2.3訪問本地路徑下靜態(tài)資源的方法(解決報錯:Not allowed to load local resource),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • springboot集成nacos無法動態(tài)獲取nacos配置的問題

    springboot集成nacos無法動態(tài)獲取nacos配置的問題

    這篇文章主要介紹了springboot集成nacos無法動態(tài)獲取nacos配置的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Java中的zookeeper常用命令詳解

    Java中的zookeeper常用命令詳解

    這篇文章主要介紹了Java中的zookeeper常用命令,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • IDEA中Git的基本應用詳解

    IDEA中Git的基本應用詳解

    這篇文章主要介紹了IDEA中Git的基本應用詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Java getParameter方法案例詳解

    Java getParameter方法案例詳解

    這篇文章主要介紹了Java getParameter方法案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • jenkins如何通過pipeline部署springboot項目

    jenkins如何通過pipeline部署springboot項目

    為了提高SpringBoot項目的部署效率和規(guī)范性,建議將項目代碼和部署腳本分離,項目代碼倉庫專注業(yè)務邏輯,構建為jar包;另外設立獨立代碼倉庫存放Jenkinsfile等部署配置文件,在Jenkins中配置pipeline,自動拉取項目代碼進行構建和部署
    2024-09-09
  • 關于activemq安裝配置以及啟動錯誤的解決

    關于activemq安裝配置以及啟動錯誤的解決

    這篇文章主要介紹了關于activemq安裝配置以及啟動錯誤的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • java finally塊執(zhí)行時機全面分析

    java finally塊執(zhí)行時機全面分析

    下面小編就為大家?guī)硪黄猨ava finally塊執(zhí)行時機全面分析。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • java之assert關鍵字用法案例詳解

    java之assert關鍵字用法案例詳解

    這篇文章主要介紹了java之assert關鍵字用法案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08

最新評論