1. 程式人生 > >Java Socket 簡單程式設計例項

Java Socket 簡單程式設計例項

之前照著書寫了一個例項,最後一次java實驗也就結束了,後來還有一個是寫計算機網路課程設計好像寫到了套接字Socket

現在又把重新拿出來,感覺是有不少東西要學習的。

所謂socket通常也稱作"套接字"。應用程式通常通過"套接字"向網路發出請求或者應答網路請求。

事實上網路程式設計簡單的理解就是兩臺計算機相互通訊資料而已,對於Java而言,這些Api存在與java.net 這個包裡面.因此只要匯入這個包就可以準備網路程式設計了。 網路程式設計的基本模型就是客戶機到伺服器模型.簡單的說就是兩個程序之間相互通訊,然後其中一個必須提供一個固定的位置,而另一個則只需要知道這個固定的位置。並去建立兩者之間的聯絡..然後完成資料的通訊就可以了,也就是網路程式設計了。

.因為埠是為了唯一標識每臺計算機唯一服務的。另外埠號是從0~65535之間的,前1024個埠已經被Tcp/Ip 作為保留埠。

1、伺服器端

package test11;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
	public static void main(String args[]){
		ServerSocket server = null;
		ServerThread thread;
		Socket you = null;
		while(true){
			try{
				server = new ServerSocket(4331);
			}
			catch(IOException e1){
				System.out.println("正在監聽");
			}
			try{
				System.out.println("等待客戶呼叫");
				you = server.accept();
				System.out.println("客戶的地址:"+you.getInetAddress());
				
			}catch(IOException e){
				System.out.println("正在等待客戶");
			}
			if(you!=null){
				new ServerThread(you).start();
			}
		}
	}
}
	class ServerThread extends Thread{
		Socket socket;
		DataOutputStream out;
		DataInputStream in;
		String s;
		ServerThread(Socket t){
			socket = t;
			try{
				out = new DataOutputStream(socket.getOutputStream());
				in = new DataInputStream(socket.getInputStream());
				
			}catch(IOException e){}
			
		}
		public void run()
		{
			while(true){
				try{
					double s1 = in.readDouble();
					double s2 = in.readDouble();
					double area = s1*s2;
					out.writeUTF("長"+s1+"寬"+s2+"的長方體的面積"+area);
					
				}
				catch (IOException e){
					System.out.println("客戶離開");
					return;
				}
			}
		}
	}

2、客戶端(執行的時候先連線伺服器)
package test11;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;

import javax.swing.*;
public class Window{
public static void main(String args[]){
	new Windows();
}
}
class Windows extends JFrame implements Runnable,ActionListener{
	JButton connection,send;
	JTextField inputText1;
	JTextField inputText2;
	JTextArea showResult;
	Socket socket;
	DataInputStream in;  //資料輸入流
	DataOutputStream out;
	Thread thread;
	public Windows(){
		socket = new Socket();
		connection = new JButton("連線伺服器");
		send = new JButton("傳送");
		send.setEnabled(false);
		
		inputText1 = new JTextField(6);
		inputText2 = new JTextField(6);
		showResult = new JTextArea();
		add(connection,BorderLayout.NORTH);
		JPanel p = new JPanel();
		p.add(new JLabel("請輸入長方形的長和寬:"));
		p.add(inputText1);
		p.add(inputText2);
		p.add(send);
		add(new JScrollPane(showResult),BorderLayout.CENTER);
		add(p,BorderLayout.SOUTH);
		connection.addActionListener(this);
		send.addActionListener(this);
		thread = new Thread();
		setBounds(10,30,460,400);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}
	public void actionPerformed(ActionEvent e){
		if(e.getSource()==connection){
			try{
				if(socket.isConnected()){}
				else{
					InetAddress address = InetAddress.getByName("localhost");
					InetSocketAddress socketAddress =new InetSocketAddress(address,4331);
					socket.connect(socketAddress);
					in = new DataInputStream(socket.getInputStream());
					out = new DataOutputStream(socket.getOutputStream());
					send.setEnabled(true);
					if(!(thread.isAlive()))
						thread = new Thread(this);
					thread.start();
				} 
				}catch(IOException ee){
					System.out.println(ee);
					socket = new Socket();
				}
			}
			if(e.getSource()==send){
				String s1 = inputText1.getText();
				String s2 = inputText2.getText();
				double r1 = Double.parseDouble(s1);
				double r2 = Double.parseDouble(s2);
				try{out.writeDouble(r1);
				out.writeDouble(r2);
				}
					
				catch(IOException e1){}
					
				}
			
			}
	
	public void run(){
		String s;
		double result = 0;
		while(true){
			try{
				s=in.readUTF();
				showResult.append("\n"+s);
				
			}catch(IOException e){
				showResult.setText("與伺服器已斷開"+e);
				socket = new Socket();
				break;
			}
		}
	}
	
		
	}
	



相關推薦

Java Socket 簡單程式設計例項

之前照著書寫了一個例項,最後一次java實驗也就結束了,後來還有一個是寫計算機網路課程設計好像寫到了套接字Socket 現在又把重新拿出來,感覺是有不少東西要學習的。 所謂socket通常也稱作"套接字"。應用程式通常通過"套接字"向網路發出請求或者應答網路請求。 事實上網

java-socket簡單程式設計socket C/S加解密)

好久沒更新部落格了,最近在幫老師整理專案,本來對socket接觸的不多。本次不多說廢話,直接說專案 專案要求:1.實現服務端和客戶端的傳輸檔案加解密,我這邊實現的是服務端傳輸加密後的檔案,客戶端收到檔案後解密,為了展示方便,我此次採用了AES加密方式,填充方式採用AES/C

java socket網路程式設計例項程式碼(含服務端和客戶端)

本程式碼為java socket網路程式設計例項程式碼,包括客戶端和服務端,實現客戶端傳送訊息,服務端接收並反饋訊息。 server.java為服務端程式碼。 client.java為客戶端程式碼。 服務端程式碼server.java: package socket;

簡單java socket TCP程式設計 每隔幾秒伺服器向客戶端傳時間

客戶端 package javaSocket; import java.io.*; import java.net.*; import org.junit.Test; import jinghai.base.time.LocalDateTime; import jinghai.base.uti

Java Socket網路程式設計:實現簡單的區域網共享檔案(PeertoPeer)

介紹 程式碼很簡單,只需要兩個java檔案:Server.java和Client.java。 程式碼不是我寫的,出自:這裡(感興趣的可以自行下載,這裡就不貼出來了) 執行結果 簡要說一下怎麼執行,這裡演示在同一個電腦上執行(也可以在多個電腦上執行,但客戶端的ip要改為伺服器端所在

Java Socket簡單例項

一 伺服器端Server.java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReade

Java Socket網路程式設計

Java Socket網路程式設計 計算機網路中,客戶機與伺服器之間進行通訊時,客戶機必須知道伺服器的IP地址和埠號。IP地址是標識Internet網路中的某臺計算機,而埠號則標識著在伺服器上執行的某個程式(程序),如果在伺服器上執行的程式,沒有埠號,則客戶端的程式就不能找到它,也不能和它

HDFS簡單程式設計例項:檔案合併

 下圖顯示了HDFS檔案系統中路徑為“localhost:50070/explorer.html#/user/hadoop”的目錄中所有的檔案資訊: 對於該目錄下的所有檔案,我們將執行以下操作: 首先,從該目錄中過濾出所有後綴名不為".abc"的檔案。 然後,對過濾之後的檔案進行讀取。

Java-socket網路程式設計

Java 網路程式設計 網路程式設計是指編寫執行在多個裝置(計算機)的程式,這些裝置都通過網路連線起來。 java.net 包中 J2SE 的 API 包含有類和介面,它們提供低層次的通訊細節。你可以直接使用這些類和介面,來專注於解決問題,而不用關注通訊細節。 java.net

Java Socket簡單例子 readLine readUTF

                        轉載請標明出處:

Java Socket網路程式設計常見異常(轉)

1.java.net.SocketTimeoutException 這個異常比較常見,socket超時。一般有2個地方會丟擲這個,一個是connect的時候,這個超時引數由connect(SocketAddress endpoint, int timeout)中的後者來決定,還有就是setSoTimeout

Android的Socket通訊程式設計例項

Android手機的應用,除了它的手機功能之外,另外一個吸引人的地方在於它的開放性,這一點iphone無法比擬,至少iphone太多商業化氣息。android為我們開啟另一扇交流之窗,而要實現交流,socket通訊必不可少。 java在socket通訊方面上已經有了很

JAVA SOCKET網路程式設計,服務端接收多個客戶端連線的實現

這是基於前面一篇文章的一個簡單擴充套件,當然這不是最好的實現 服務端如果要想接收多個客戶端連線,必須死迴圈去接收新的客戶端的連線請求,一個完整的客戶端服務端socket連線通過一個執行緒來維護 package com.tree.demo.socket; import

Java WebService 簡單例項

WebService到底是什麼? Web Service也叫XML Web Service WebService是一種可以接收從Internet或者Intranet上的其它系統中傳遞過來的請求,輕量級的獨立的通訊技術。是:通過SOAP在Web上提供的軟體服務,使用WSDL檔

Java Socket網路程式設計的經典例子(轉)

   事實上網路程式設計簡單的理解就是兩臺計算機相互通訊資料而已,對於程式設計師而言,去掌握一種程式設計介面並使用一種程式設計模型相對就會顯得簡單的多了,Java SDK提供一些相對簡單的Api來完成這些工作。Socket就是其中之一,對於Java而言,這些Api存在與jav

Java Socket程式設計(五) 簡單的WEB伺服器

簡單的WEB伺服器一個簡單的WEB伺服器將由列表9.2這樣構建.當然,還必須要對方法和迴應事件進行改進.簡單的伺服器不會分析和儲存請求頭.新的WEB伺服器將分析和儲存請求,為以後的處理作準備.為了達到這個目的,你必須有一個包含HTTP請求的類.HTTPrequest類列表9.5列出了一個完整的HTTPrequ

Java socket通訊例項簡單入門socket例項程式碼

是不是看了許多socket入門知識,卻還是不能實際運用呢,這篇文章通過利用簡單例項程式講解通過socket實現客戶端與伺服器之間的通訊。這篇文章可以讓你不需要了解socket原理也能利用,便於應急,但建議之後要好好補補關於soket的基礎知識。 首先就是上程式碼,先是伺服器

java語言搭建SSL的Socket併發送字串訊息(最簡單應用例項/常見異常及解決)

我看了幾篇微博,有的非常詳實,作為深入學習資料非常好。 但是有的說是例項吧...無關測試程式碼太多,感覺就是畫蛇添足。各種祕鑰庫管理感覺都是非必要的。 索性自己寫一個。順便記錄一些常見的異常,如: Cannot recover key certificate_unkno

JAVA Socket模擬簡單通訊例項(一)

什麼是Sokcet?    Socket就是套接字,說白了就是連結的一端。建立網路通訊的雙方,都有一個socket,每一個socket都儲存有一個此次通訊需要的資料,例如對方的網路地址,埠號等。    有了網路地址,就可以在網路中找到那個需要連線的機器,有了埠號,就知道連結對

vc socket tcp程式設計簡單例項

//Server端 #include <Winsock2.h> #include <stdio.h> void main() { WORD wVersionRequested; WSADATA wsaData; int er