1. 程式人生 > >java使用UDP來進行客戶端和伺服器端通訊的簡單例子

java使用UDP來進行客戶端和伺服器端通訊的簡單例子

1:客戶端程式

package com.pb.udp;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.net.DatagramSocket;

/**
 *  使用Sender類來代表客戶端程式,
 * @author ccna_zhang
 *
 */
public class Sender {

	public static void main(String[] args) {
		String msg = "Hello, World";
		byte[] buf = msg.getBytes();
		try {
			InetAddress address = InetAddress.getByName("192.168.1.80");  //伺服器地址
			int port = 8080;  //伺服器的埠號
			//建立傳送方的資料報資訊
			DatagramPacket dataGramPacket = new DatagramPacket(buf, buf.length, address, port);
			
			DatagramSocket socket = new DatagramSocket();  //建立套接字
			socket.send(dataGramPacket);  //通過套接字傳送資料
			
			//接收伺服器反饋資料
			byte[] backbuf = new byte[1024];
			DatagramPacket backPacket = new DatagramPacket(backbuf, backbuf.length);
			socket.receive(backPacket);  //接收返回資料
			String backMsg = new String(backbuf, 0, backPacket.getLength());
		    System.out.println("伺服器返回的資料為:" + backMsg);
		    
			socket.close();
			
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


2:伺服器端程式

package com.pb.udp;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketAddress;
import java.net.UnknownHostException;

/**
 * 伺服器端程式
 * @author ccna_zhang
 *
 */
public class Receiver {

	public static void main(String[] args) {
		
		try {
			InetAddress address = InetAddress.getLocalHost();
			int port = 8080;  
			
			//建立DatagramSocket物件
			DatagramSocket socket = new DatagramSocket(port, address);
			
			byte[] buf = new byte[1024];  //定義byte陣列
			DatagramPacket packet = new DatagramPacket(buf, buf.length);  //建立DatagramPacket物件
			
			socket.receive(packet);  //通過套接字接收資料
			
			String getMsg = new String(buf, 0, packet.getLength());
			System.out.println("客戶端傳送的資料為:" + getMsg);
			
			//從伺服器返回給客戶端資料
			InetAddress clientAddress = packet.getAddress(); //獲得客戶端的IP地址
			int clientPort = packet.getPort(); //獲得客戶端的埠號
			SocketAddress sendAddress = packet.getSocketAddress();
			String feedback = "Received";
			byte[] backbuf = feedback.getBytes();
			DatagramPacket sendPacket = new DatagramPacket(backbuf, backbuf.length, sendAddress); //封裝返回給客戶端的資料
			socket.send(sendPacket);  //通過套接字反饋伺服器資料
			
			socket.close();  //關閉套接字
			
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch(IOException e) {
			e.printStackTrace();
		}
	}
}


3:程式執行結果

伺服器端:

    客戶端傳送的資料為:Hello, World

客戶端:

   伺服器返回的資料為:Received

相關推薦

java使用UDP進行客戶伺服器通訊簡單例子

1:客戶端程式 package com.pb.udp; import java.io.IOException; import java.net.DatagramPacket; import java.net.InetAddress; import java.net.Unk

LInux中利用執行緒實現多個客戶伺服器進行通訊

上一篇博文講了如何利用子程序實現多個客戶端和伺服器端進行通訊, 那麼,這一篇部落格就來實現一下如何利用執行緒實現多個客戶端和伺服器端進行通訊 程式碼實現: ser1.c #include <

java socket 多客戶伺服器通訊

    所謂可以多客戶端,就是需要在伺服器端進行多執行緒程式設計,每一個客戶端對應一個執行緒。如果要實現時時通訊和話,無論是客戶端還是伺服器端都要至少兩個執行緒,主執行緒進行傳送資訊,子執行緒進行獲取資訊,這樣可以保證時時通訊.下面貼出我的程式碼:客戶端:package

UDP的客戶伺服器的例項(VC6.0實現)

伺服器端程式: // UdpServer.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <stdio.h> //使用win

Explorer : 釋出一個key-value儲存系統,帶有客戶伺服器

Explorer 一個key-value儲存系統,帶有客戶端和伺服器端。使用非常方便。 使用B+樹作為儲存引擎,客戶端和伺服器端使用TCP協議進行通訊。   程式碼採用C++實現,底層將客戶端和伺服器通訊封裝成了一個網路庫,裡面還有些還不錯的實現可供看看,比如

Windows下開發Cocos2d-x lua 客戶伺服器

做為一個iOS開發者,一直在Mac + XCode環境下開發。初嘗遊戲開發,客戶端是Cocos-2d lua + quick的,服務端是C++的。因為暫時只需要修改iPhone工程,本想著在Mac上開發客戶端,但是沒成想XCode上無法進行lua程式碼的除錯。只

Velocity 實現客戶伺服器模板

靈活的模板引擎為 JSP 技術提供一種沒有遺產負擔的選擇Sing Li 作家, Wrox Press 2004 年 3 月 13 日 Velocity 是一種通用的、開放原始碼的模板解決方案,可以在報告生成/資料轉換應用程式中獨立使用,也可以在 MVC 模型框架中作為檢視元

java socket 客戶伺服器互相通訊(聊天)

客戶端: package com.lzx.socket; import java.io.BufferedReader; import java.io.IOException; import jav

android上傳大檔案到伺服器客戶伺服器程式碼

使用一般的上傳方法一般上傳不能超過2m的檔案,也非常容易中斷和出錯,於是本人打算使用xutils框架進行檔案上傳開發,話不多說直接上原始碼 首先要下載這個類庫的jar包,地址:https://github.com/wyouflf/xUtils android端程式碼: 新增

網路通訊,實現客戶伺服器通訊

      write(new_fd,buf,strlen(buf));    }    }else{      perror("fork");    }}int main(int argc,char *argv[]){    if(argc!=3){       printf("Usage ./server

關於客戶伺服器live555的一點bug修改

  客戶端主要出錯資訊:   MultiFramedRTPSource error: Hit limit when reading incoming packet over TCP. Increase \"MAX_PACKET_SIZE\"   RTCPInstance e

客戶伺服器的一些異常

第1個異常是java.net.BindException:Address already in use: JVM_Bind。該異常發生在伺服器端進行new ServerSocket(port)(port是一個0,65536的整型值)操作時。異常的原因是以為與port一樣的一

socket用執行緒實現客戶伺服器連續傳送資料

總共涉及到四個類。 其中包括,一個客戶端client,一個服務端server, 然後伺服器端和客戶端都有傳送和接收的功能,所以還有一個傳送類sendThread實現runnable介面,還有個接收類receiveThread實現runnable介面。 在客戶端client和

TCP 客戶伺服器

轉自:http://blog.csdn.net/itcastcpp/article/details/39047265 前面幾篇中實現的client每次執行只能從命令列讀取一個字串發給伺服器,再從伺服器收回來,現在我們把它改成互動式的,不斷從終端接受使用者輸入並和serv

Android客戶伺服器資料互動的第四種方法

        網上有很多例子來演示Android客戶端和伺服器端資料如何實現互動不過這些例子大多比較繁雜,對於初學者來說這是不利的,現在介紹幾種程式碼簡單、邏輯清晰的互動例子,本篇部落格介紹第四種:         一、伺服器端:         程式碼1:新增名為“A

客戶伺服器跳轉

  1.客戶端瀏覽器傳送HTTP request到伺服器    2.伺服器在接收到客戶端request之後,分別創建出HttpServletRequest物件和HttpServletResponse物件,然後呼叫所請求的servlet的service方法,同時將HttpServletRequest物件和Htt

socket bind在客戶伺服器使用的區別

1、client bind (1)bind埠 由程序選擇一個埠去連伺服器,(如果預設情況下,呼叫bind函式時,核心指定的埠是同一個,那麼呼叫多個呼叫了bind()的client程式,會出現埠被佔用的錯誤)注意這裡的埠是客戶端的埠。如果不分配,指定埠0,就表示交給核心去選擇

用 socket 通訊寫出客戶伺服器通訊 , 要求客戶傳送資料後能夠回顯相同的資料

比較基礎的一個服務端客戶端互相通訊的程式/** * @author john socket 的伺服器端,接收到資料後列印到控制檯 的資料 * */ public class ServiceSocket_1 { public static void main(

Android微信支付詳細流程(包括手機伺服器

相關檔案下載地址:http://download.csdn.net/detail/s_alics/9383437點選開啟連結 **************************************************************************

VS2015 C++ main()下進行SOCKET單執行緒網路通訊簡單例子(聊天軟體的搭建)

//伺服器 #include<iostream> #include <Winsock2.h> using namespace std; #pragma comment(lib, "ws2_32.lib") int main() { WSADAT