最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

        實例1:本實例是一個TCP服務(wù)器端程序,在 getserver() 方法中建立服務(wù)器套接字,調(diào)用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("服務(wù)器套接字已經(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();
	}
}

運行結(jié)果:

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

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

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

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

服務(wù)器端運行結(jié)果:

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

客戶端運行結(jié)果:

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

說明:

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

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

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

        感謝大家對本站的支持。

相關(guān)文章

  • Java與Mysql鎖相關(guān)知識總結(jié)

    Java與Mysql鎖相關(guān)知識總結(jié)

    這篇文章主要介紹了Java與Mysql鎖相關(guān)知識總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • 基于Java+SpringBoot實現(xiàn)人臉識別搜索

    基于Java+SpringBoot實現(xiàn)人臉識別搜索

    人臉識別搜索技術(shù)作為現(xiàn)代計算機視覺領(lǐng)域的重要研究方向之一,已經(jīng)在多個領(lǐng)域展現(xiàn)出巨大的應(yīng)用潛力,隨著信息技術(shù)的飛速發(fā)展,人臉識別搜索在多個領(lǐng)域得到了廣泛關(guān)注和應(yīng)用,本文旨在探討人臉識別搜索技術(shù)的背景、原理以及其在實際應(yīng)用中的意義和挑戰(zhàn)
    2023-08-08
  • java代碼執(zhí)行字符串中的邏輯運算方法

    java代碼執(zhí)行字符串中的邏輯運算方法

    今天小編就為大家分享一篇java代碼執(zhí)行字符串中的邏輯運算方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • java中常見的6種線程池示例詳解

    java中常見的6種線程池示例詳解

    這篇文章主要介紹了java中常見的6種線程池示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Aspectj框架實戰(zhàn)案例詳解

    Aspectj框架實戰(zhàn)案例詳解

    這篇文章主要介紹了Aspectj框架實戰(zhàn),結(jié)合具體案例形式詳細(xì)分析了Aspectj框架具體配置、使用、編譯等相關(guān)操作技巧,需要的朋友可以參考下
    2020-01-01
  • Java打開瀏覽器訪問指定頁面的實現(xiàn)方法

    Java打開瀏覽器訪問指定頁面的實現(xiàn)方法

    在開發(fā)Java應(yīng)用程序時,有時需要從程序中啟動默認(rèn)的Web瀏覽器并訪問特定的網(wǎng)頁,這在實現(xiàn)幫助文檔鏈接、用戶指南或在線資源導(dǎo)航等功能時非常有用,本文將介紹如何使用Java代碼來實現(xiàn)這一功能,需要的朋友可以參考下
    2025-01-01
  • springboot中報錯Invalid character found in the request的解決

    springboot中報錯Invalid character found in 

    這篇文章主要介紹了springboot中報錯Invalid character found in the request的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 時間中間鍵的整理

    時間中間鍵的整理

    這篇文章主要介紹了時間中間鍵的整理的相關(guān)資料,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,需要的朋友可以參考下
    2017-10-10
  • 基于ArrayList常用方法的源碼全面解析

    基于ArrayList常用方法的源碼全面解析

    下面小編就為大家?guī)硪黄贏rrayList常用方法的源碼全面解析。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • MyBatis-Plus的yml配置方式小結(jié)

    MyBatis-Plus的yml配置方式小結(jié)

    本文主要介紹了MyBatis-Plus的yml配置方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11

最新評論

乳山市| 鹤峰县| 抚宁县| 马公市| 泰兴市| 乐昌市| 浠水县| 驻马店市| 鄯善县| 察雅县| 古交市| 道真| 桐梓县| 泾源县| 城口县| 巨野县| 泰安市| 慈利县| 佳木斯市| 巴林左旗| 鄂伦春自治旗| 饶平县| 峡江县| 阿鲁科尔沁旗| 龙陵县| 绥棱县| 天柱县| 威海市| 阿勒泰市| 岑巩县| 庆安县| 剑阁县| 兰西县| 乐昌市| 乌鲁木齐市| 河南省| 梁河县| 天津市| 淮北市| 双峰县| 桑日县|