伺服器封裝地址java
① java中如何完成UDP包的封裝
給你一段代碼,或許可以幫到你……
public class SendSideTest {
/*發送數據 */
public static void main(String[] args) throws IOException {
//1 DatagramSocket是用來接收發送數據的
DatagramSocket ds = new DatagramSocket();
//2 發送什麼
byte[] s="helloabcdef".getBytes();
//3 發送到哪,發送到本機
InetAddress clientAddress=InetAddress.getLocalHost();
//4 搭建一個outDataPacket相當於一個郵包
//把發送的內容,發送的地址,發送的埠,寫在郵包上
DatagramPacket op = null;
op=new DatagramPacket(s, s.length,clientAddress, 9999);
//5 通過一個DatagramPacket將數據發送到客戶端,
//客戶端的地址由DatagramPacket指定,即寫在郵包上
ds.send(op);
System.out.println("數據已經成功發送");
}
}
public class ReceiveSideTest {
/* 接收方*/
public static void main(String[] args) throws IOException {
//1 DatagramSocket相當於建立一個伺服器 在9999監聽
DatagramSocket ds = new DatagramSocket(9999);
//2 DatagramPacket是用來接收發送的數據的 要有容器接收
byte[] msg = new byte[100];
DatagramPacket ip = new DatagramPacket(msg, msg.length);
//3調用receive方法接收數據到DatagramPacket 中
//數據又由DatagramPacket放入msg
ds.receive(ip);
String msgs = new String(msg);
System.out.println(msgs);
//4通過DatagramPacket得到地址和埠 把發送者列印出來
InetAddress clientAddress = ip.getAddress();
int clientPort = ip.getPort();
System.out.println("發送者:"+clientAddress);
System.out.println("發送埠:"+clientPort);
}
}
② java編程,獲取區域網內伺服器端的ip地址
socket.connect(new InetSocketAddress(ip, port), timeout)
看有沒有拋異常 沒異常就是已經連接上了
想獲取伺服器名稱 可以用ARP協議 或者測試連接的時候伺服器回應一個名稱
package;
importjava.io.IOException;
importjava.net.InetSocketAddress;
importjava.net.Socket;
publicclassClient{
publicstaticvoidmain(String[]args){
/**
*埠號
*/
intport=10000;
/**
*連接延時
*/
inttimeout=300;
System.out.println("ScannerStart...");
Socketsocket;
/**
*掃描
*/
for(inti=1,k=254;i<k;i++){
if((socket=isOnLine("192.168.1."+i,port,timeout))!=null){
System.out.println("Server:"
+socket.getInetAddress().getHostAddress()
+":"+socket.getPort()+"IsWaiting...");
}
/**
*關閉連接
*/
if(socket!=null&&!socket.isClosed()){
try{
socket.close();
}catch(IOExceptione){
socket=null;
}
}
}
System.out.println("Scannerend...");
}
/**
*測試連接伺服器,返回連接成功後的Socket
*
*@paramip
*伺服器Ip
*@paramport
*伺服器埠號
*@paramtimeout
*連接延時
*@return返回連接成功後的Socket
*/
privatestaticSocketisOnLine(Stringip,intport,inttimeout){
Socketsocket=newSocket();
try{
socket.connect(newInetSocketAddress(ip,port),timeout);
}catch(IOExceptione){
returnnull;
}
returnsocket;
}
}
③ 伺服器配置Java環境教程
linux下的方法你可以參考下,具體不懂網路去:
使用java -version 查看是否安裝了jdk以及jdk的版本號
1.安裝jdk
下載jdk-7-linux-i586.tar.gz
使用tar -xzvf jdk-7-linux-i586.tar.gz
然後復制到要放的位置,cp命令
修改環境變數:
打開 etc/profile 使用vi在最後添加:
##### jdk #####
JAVA_HOME=/usr/myhome/jdk1.7/jdk1.7.0_79 jdk所在目錄(例如:/usr/share/jdk1.5.0_05)
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
配置文件生效: . /etc/profile 注意點和/有一個空格。
④ java伺服器接收客戶端請求怎樣實現的
伺服器端代碼:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* Socket通訊伺服器端
* @author 米強
*
*/
public class ServerMain {
public ServerMain() {
try {
// 構造伺服器ServerSocket對象,參數為伺服器端開放的埠號
ServerSocket ss = new ServerSocket(30102);
System.out.println("伺服器准備就緒!");
// 死循環可以使伺服器持續處於接收客戶端狀態
while(true){
// 該方法使程序阻塞,等待客戶端的鏈接,當監聽到客戶端的鏈接,創建一個Socket對象與客戶端單獨會話
Socket s = ss.accept();
// 為了不影響伺服器監聽其它客戶端,這里開啟了一個線程,由線程處理與這個客戶端的會話
new ServerThread(s).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new ServerMain();
}
}
/**
* 伺服器端與客戶端會話的線程
*/
class ServerThread extends Thread {
private Socket s = null;
private BufferedReader read = null;
private PrintStream print = null;
public ServerThread(Socket s) {
this.s = s;
try {
// 從Socket中獲取輸入流和輸出流,由於我們只做一個簡單的字元串通訊,所以採用BufferedRead和PrintStream來封裝輸入、輸出流
read = new BufferedReader(new InputStreamReader(s.getInputStream()));
print = new PrintStream(s.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 線程的運行run方法
*/
public void run() {
try {
String message = null;
// 這里循環可以使伺服器持續的接收客戶端信息。read.readLine()通過輸入流讀取一段字元串,賦值給message變數,如果message字元串不為「exit」則循環,否則結束循環
while (!(message = read.readLine()).equals("exit")){
// 將字元串前面添加「返回:」,再發回客戶端
print.println("返回:" + message);
}
} catch (IOException e) {
} finally {
// 在 finally 代碼塊中無論如何都會執行下面代碼:
try {
// 如果沒有關閉Socket
if(!s.isClosed()){
// 關閉Socket鏈接
s.close();
}
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
客戶端代碼:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
/**
* Socket通訊客戶端
* @author 米強
*
*/
public class ClientMain {
public ClientMain() {
try {
// 構造與伺服器通訊的Socket對象,參數為伺服器IP地址(String)和埠號(int),埠號需要和伺服器端開放的埠號對應
Socket s = new Socket("192.168.1.100", 30102);
// 啟動一個線程與伺服器通訊,並把鏈接伺服器的Socket對象傳遞過去
new LinkThread(s).start();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new ClientMain();
}
}
/**
* 與伺服器通訊的線程
*/
class LinkThread extends Thread {
private Socket s = null;
// 輸出流
private PrintStream out = null;
// 緩沖輸入流
private BufferedReader in = null;
// 錄入文字的Scanner對象
private Scanner scanner = null;
public LinkThread(Socket s) {
// 將Socket對象實例保存在全局變數中,因為run方法中我們還要用它斷開鏈接
this.s = s;
try {
// 從Socket中獲取輸入流和輸出流,由於我們只做一個簡單的字元串通訊,所以採用BufferedRead和PrintStream來封裝輸入、輸出流
out = new PrintStream(s.getOutputStream());
in = new BufferedReader(new InputStreamReader(s.getInputStream()));
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 線程的運行run方法
*/
public void run() {
// 構造Scanner對象
scanner = new Scanner(System.in);
System.out.println("提示:如果要結束本次會話,請輸入「exit」指令!");
try {
// 死循環可以使客戶端不斷的向伺服器發送信息,不用擔心循環無法結束,後面的return語句可以結束整個線程。
while(true){
// 提示用戶輸入文字
System.out.print("請輸入:");
// 將用戶輸入的字元串保存在message變數中
String message = scanner.nextLine();
// 通過輸出流發送字元串
out.println(message);
// 清空緩沖,強制輸出
out.flush();
// 獲取伺服器返回的字元串
String str = in.readLine();
// 如果返回的字元串存在
if(str != null){
// 顯示在控制台
System.out.println(str);
}else{
// 提示會話結束,並結束線程
System.out.println("本次會話結束!");
return;
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
// 在 finally 代碼塊中無論如何都會執行下面代碼:
try {
// 如果沒有關閉Socket
if(!s.isClosed()){
// 關閉Socket鏈接
s.close();
}
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
⑤ java有一大批介面地址如何封裝
最直接的方法是介面地址放在配置文件中,調用端讀取配置文件得到介面地址
⑥ 用java 寫一個登陸的功能,輸入賬戶和密碼,發送給伺服器端,這個消息怎麼封裝
都不知道你的伺服器是web伺服器 還是socket通訊伺服器
如果是web伺服器 那就如婉月工作室所說的 那麼發送
如果是socket 伺服器 那就在伺服器上建立socket服務端
在登錄機上建立socket 客戶端
自定義通訊協議 比如 發送 login#admin#000111
服務端就可以識別為 是登錄指令 用戶名 admin 密碼 000111
伺服器訪問資料庫 得到結果 返回 login#1 或者 login#0 那客戶端就知道驗證是否成功了
這是最簡單的規約
⑦ java裡面如何獲取伺服器的ip地址,幫幫忙
獲取本機ip地址
InetAddress addr = InetAddress.getLocalHost();
ip=addr.getHostAddress().toString;
⑧ java伺服器端「/「文件路徑如何書寫
在java中路徑都這么寫:\\ , 這個就是路徑分隔符,以後就不用「/」了吧
不管是實在windows還是在linux中,你都用「\\」作為路徑分隔符就對了
File.separator()這個方法是沒什麼問題,但是,你如果傳入字元串後,
使用File.separator來split,可能會出錯的哦,你在所有的地方,都用「\\」,
肯定是不會錯的啦。
至於你說的json中也是,在java中就是用\\,這與json無關,而是轉義導致的
⑨ java獲取伺服器文件,怎樣用url返回
下面提供二種方法會使用java發送url請求,並獲取伺服器返回的值
第一種方法:
代碼如下:
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.util.EntityUtils;
(StringurlStr,Stringparam1,Stringparam2)throwsException{
StringtempStr=null;
HttpClienthttpclient=newDefaultHttpClient();
Propertiesproperties=newProperties();
HttpEntityentity=null;
StringxmlContent="";
try
{
//設置超時時間
httpclient.getParams().setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,20000);
httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,20000);
//封裝需要傳遞的參數
List<NameValuePair>nvps=newArrayList<NameValuePair>();
nvps.add(newBasicNameValuePair("mainMemoCode",strmainMemoCode));
nvps.add(newBasicNameValuePair("recordPassWord",strrecordPassWord));
//客戶端的請求方法類型
HttpPosthttpPost=newHttpPost(urlStr);
httpPost.setEntity(newUrlEncodedFormEntity(nvps,"GBK"));
HttpResponseresponse=httpclient.execute(httpPost);
//獲取伺服器返回Http的Content-Type的值
tempStr=response.getHeaders("Content-Type")[0].getValue().toString();
//獲取伺服器返回頁面的值
entity=response.getEntity();
xmlContent=EntityUtils.toString(entity);
Stringstrmessage=null;
System.out.println(xmlContent);
System.out.println(response.getHeaders("Content-Type")[0].getValue().toString());
httpPost.abort();
}
catch(SocketTimeoutExceptione)
{
}
catch(Exceptionex)
{
ex.printStackTrace();
}
finally{
httpclient.getConnectionManager().shutdown();
}
第二種方法:
代碼如下:
(StringurlStr,Stringparam1,Stringparam2)throwsException{
HttpURLConnectionurl_con=null;
try{
URLurl=newURL(urlStr);
StringBufferbankXmlBuffer=newStringBuffer();
//創建URL連接,提交到數據,獲取返回結果
HttpURLConnectionconnection=(HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setRequestProperty("User-Agent","directclient");
PrintWriterout=newPrintWriter(newOutputStreamWriter(connection.getOutputStream(),"GBK"));
out.println(param);
out.close();
BufferedReaderin=newBufferedReader(newInputStreamReader(connection
.getInputStream(),"GBK"));
StringinputLine;
while((inputLine=in.readLine())!=null){
bankXmlBuffer.append(inputLine);
}
in.close();
tempStr=bankXmlBuffer.toString();
}
catch(Exceptione)
{
System.out.println("發送GET請求出現異常!"+e);
e.printStackTrace();
}finally{
if(url_con!=null)
url_con.disconnect();
}
returntmpeStr;
}
總結:多練習代碼,熟練之後才能更快速的去了解代碼的學習的方法。多去獲取一些思維方面的書籍可以看看。
⑩ linux伺服器怎麼搭建java環境
因為阿里雲伺服器事先就安裝好了ssh,我們可以用xshell連上去,我把下載好的tar.gz上傳到/opt/目錄,用命令 tar -zxvf jdk-8u74-linux-x64.tar.gz
剩下的就是配置環境變數了。
然後我就在命令行輸入 #java -version 發現並沒有出現java的版本信息(有些好像不用安裝好沒配置環境變數就能出來,我這里好像不行)
於是我開始配置環境變數vi /etc/profile 加入如下配置
JAVA_HOME=/opt/jdk1.8.0_74
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
然後是配置文件立即生效:[root@localhost ~]# source /etc/profile //使修改立即生效
再輸入java -version就有你安裝的版本信息了