當前位置:首頁 » 編程軟體 » javasockettcp編程

javasockettcp編程

發布時間: 2022-06-17 20:55:48

java TCP Socket編程 計算題

伺服器端CalculateServer.java:

packageserverMole;


importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.PrintStream;
importjava.net.ServerSocket;
importjava.net.Socket;

publicclassCalculateServer{
publicstaticvoidmain(String[]args){
=newCalculateServer();
try{
calculateServer.startServer();
}catch(Exceptione){
e.printStackTrace();
System.out.println("伺服器出錯!");
}

}
//把輸入的字元串轉換成float數組
publicfloat[]convertToArray(StringinputString){
StringnumberString=inputString.substring(inputString.indexOf('[')+1,inputString.indexOf(']'));
String[]stringArray=numberString.split(",");
float[]numberArray=newfloat[2];
for(inti=0;i<2;i++){
try{
numberArray[i]=Float.parseFloat(stringArray[i]);
}catch(NumberFormatExceptione){
System.out.println("數字錯誤!");
returnnull;
}
}
returnnumberArray;
}
//計算數組結果
publicStringgetResultString(float[]numberArray){
float[]result=newfloat[4];
result[0]=numberArray[0]+numberArray[1];
result[1]=numberArray[0]=numberArray[1];
result[2]=numberArray[0]*numberArray[1];
result[3]=numberArray[0]/numberArray[1];
StringresultString=String.format("[%1$s,%2$s,%3$s,%4$s]",result[0],result[1],result[2],result[3]);
returnresultString;
}
//socketServer
publicvoidstartServer()throwsException{
ServerSocketserverSocket=null;
PrintStreamout=null;
BufferedReaderin=null;
SocketsocketObj=null;
try{
serverSocket=newServerSocket(1888);
System.out.println("伺服器啟動...");
socketObj=serverSocket.accept();
out=newPrintStream(socketObj.getOutputStream());
in=newBufferedReader(newInputStreamReader(socketObj.getInputStream()));
}catch(IOExceptione){
System.out.println("伺服器啟動失敗!");
}
booleanflag=true;
CalculateServercs=newCalculateServer();
try{
while(flag){
StringinputString=in.readLine();
System.out.println("接收到數據:"+inputString);
if(inputString.equals("bye")){
flag=false;
continue;
}
if(inputString==null||inputString.length()<5){
out.println("你的輸入有誤!");
}else{
out.println(cs.getResultString(cs.convertToArray(inputString)));
}
}
}catch(Exceptione){
out.println("數據輸入有誤!");
}finally{
out.close();
in.close();
socketObj.close();
serverSocket.close();
}
}
}

客戶端CalculateClient.java

packageclientMole;

importjava.io.BufferedReader;
importjava.io.InputStreamReader;
importjava.io.PrintStream;
importjava.net.Socket;

publicclassCalculateClient{
publicstaticvoidmain(String[]args){
=newCalculateClient();
try{
calculateClient.startClient();
}catch(Exceptione){
System.out.println("啟動失敗!");
}
}
publicvoidstartClient()throwsException{
SocketsocketObj=newSocket("localhost",1888);
PrintStreamout=null;
BufferedReaderin=null;
out=newPrintStream(socketObj.getOutputStream());
in=newBufferedReader(newInputStreamReader(socketObj.getInputStream()));
BufferedReaderlocalInput=null;
localInput=newBufferedReader(newInputStreamReader(System.in));
booleanflag=true;
while(flag){
System.out.println("請輸入兩個數字,格式為[number1,number2],輸入bye則退出:");
StringinputString=localInput.readLine();
out.println(inputString);
if(inputString.equals("bye")){
flag=false;
}else{
Stringinput=in.readLine();
System.out.println("伺服器返回結果為:");
System.out.println(input);
}
}
out.close();
in.close();
localInput.close();
socketObj.close();
}
}

㈡ java編程中,Socket通信是怎麼實現的

java編程對於Socket之間的通信過程如下:

服務端往Socket的輸出流裡面寫東西,客戶端就可以通過Socket的輸入流讀取對應的內容。Socket與Socket之間是雙向連通的,所以客戶端也可以往對應的Socket輸出流裡面寫東西,然後服務端對應的Socket的輸入流就可以讀出對應的內容。下面來看一些服務端與客戶端通信的例子:

publicclassServer{

publicstaticvoidmain(Stringargs[])throwsIOException{
//為了簡單起見,所有的異常信息都往外拋
intport=8899;
//定義一個ServerSocket監聽在埠8899上
ServerSocketserver=newServerSocket(port);
//server嘗試接收其他Socket的連接請求,server的accept方法是阻塞式的
Socketsocket=server.accept();
//跟客戶端建立好連接之後,我們就可以獲取socket的InputStream,並從中讀取客戶端發過來的信息了。
Readerreader=newInputStreamReader(socket.getInputStream());
charchars[]=newchar[64];
intlen;
StringBuildersb=newStringBuilder();
while((len=reader.read(chars))!=-1){
sb.append(newString(chars,0,len));
}
System.out.println("fromclient:"+sb);
reader.close();
socket.close();
server.close();
}

}
客戶端代碼
Java代碼publicclassClient{

publicstaticvoidmain(Stringargs[])throwsException{
//為了簡單起見,所有的異常都直接往外拋
Stringhost="127.0.0.1";//要連接的服務端IP地址
intport=8899;//要連接的服務端對應的監聽埠
//與服務端建立連接
Socketclient=newSocket(host,port);
//建立連接後就可以往服務端寫數據了
Writerwriter=newOutputStreamWriter(client.getOutputStream());
writer.write("HelloServer.");
writer.flush();//寫完後要記得flush
writer.close();
client.close();
}

}

㈢ 怎麼調試java socket編程

如果是tcp/ip,在accept或者send裡面打斷點,如果是udp,隨便在消息處理打個斷點。
不明白這有什麼困難

㈣ JAVA Socket 底層是怎樣基於TCP/IP 實現的

首先必須明確:TCP/IP模型中有四層結構:
應用層(Application Layer)、傳輸層(Transport Layer)、網路層(Internet Layer )、鏈路層(LinkLayer)
其中Ip協議(Internet Protocol)是位於網路層的,TCP協議時位於傳輸層的。通過Ip協議可以使可以使兩台計算機使用同一種語言,從而允許Internet上連接不同類型的計算機和不同操作系統的網路。Ip協議只保證計算機能夠接收和發送分組數據。 當計算機要和遠程的計算機建立連接時,TCP協議會讓他們建立連接:用於發送和接收數據的虛擬電路。

在JAVA中,我們用 ServerSocket、Socket類創建一個套接字連接,從套接字得到的結果是一個InputStream以及OutputStream對象,以便將連接作為一個IO流對象對待。通過IO流可以從流中讀取數據或者寫數據到流中,讀寫IO流會有異常IOException產生。

套接字或插座(socket)是一種軟體形 式的抽象,用於表達兩台機器間一個連接的「終端」。針對一個特定的連接,每台機器上都有一個「套接字」,可以想像它們之間有一條虛擬的「線纜」。JAVA 有兩個基於數據流的套接字類:ServerSocket,伺服器用它「偵聽」進入的連接;Socket,客戶端用它初始一次連接。偵聽套接字只能接收新的 連接請求,不能接收實際的數據包,即ServerSocket不能接收實際的數據包。
套接字是基於TCP/IP實現的,它是用來提供一個訪問TCP的服務介面,或者說套接字socket是TCP的應用編程介面API,通過它應用層就可以訪問TCP提供的服務。
在JAVA中,我們用 ServerSocket、Socket類創建一個套接字連接,從套接字得到的結果是一個InputStream以及OutputStream對象,以便 將連接作為一個IO流對象對待。通過IO流可以從流中讀取數據或者寫數據到流中,讀寫IO流會有異常IOException產生。

㈤ java Socket網路編程

調用 outt.flush ();

㈥ 《JavaTCP/IPSocket編程》epub下載在線閱讀,求百度網盤雲資源

《Java TCP/IP Socket編程》(Kenneth L. Calvert)電子書網盤下載免費在線閱讀

資源鏈接:

鏈接:https://pan..com/s/1L6VHTRQySYrO8PdrwEtMmA

提取碼:mzh0

書名:Java TCP/IP Socket編程

作者:Kenneth L. Calvert

譯者:周恆民

豆瓣評分:8.0

出版社:機械工業出版社

出版年份:2009-1

頁數:172

內容簡介:

《Java TCP/IP Socket編程(原書第2版)》基於TCP/IP Socket相關原理,對如何在Java中進行Socket編程作了深入淺出的介紹。《Java TCP/IP Socket編程(原書第2版)》內容簡明扼要,條理清晰,並在講解相應的概念或編程技巧時列舉了大量的示常式序,每章附有練習。

㈦ java socket編程 是什麼協議

Socket,又稱為套接字,Socket是計算機網路通信的基本的技術之一。如今大多數基於網路的軟體,如瀏覽器,即時通訊工具甚至是P2P下載都是基於Socket實現的。本文會介紹一下基於TCP/IP的Socket編程,並且如何寫一個客戶端/伺服器程序。
方法/步驟

Java中的socket編程 下面的部分將通過一些示例講解一下如何使用socket編寫客戶端和伺服器端的程序。 注意:在接下來的示例中,我將使用基於TCP/IP協議的socket編程,因為這個協議遠遠比UDP/IP使用的要廣泛。並且所有的socket相關的類都位於java.net包下,所以在我們進行socket編程時需要引入這個包。

寫入數據 接下來就是寫入請求數據,我們從客戶端的socket對象中得到OutputStream對象,然後寫入數據後。很類似文件IO的處理代碼。

打開伺服器端的socket

讀取數據 通過上面得到的socket對象獲取InputStream對象,然後安裝文件IO一樣讀取數據即可。這里我們將內容列印出來。

使用socket實現一個回聲伺服器,就是伺服器會將客戶端發送過來的數據傳回給客戶端。

㈧ JAVA中socket編程的一些疑問

TCP編程中,是由客戶端主動連接伺服器端。客戶端的埠是由操作系統動態分配的。而伺服器端的埠是可以指定的。在客戶端,只需要指定伺服器端的IP地址和埠號即可。在伺服器端,只需要指定監聽的埠即可。
因為TCP通道是可以互相通訊的。客戶端和伺服器端建立了通道後可以進行雙方通訊。可以想像下打電話。

UDP編程中,一般的程序都包含發送端和接收端。 每個程序都要指定2個埠才能通訊,一個是用來接收包,一個是用來發送包。
可以想像一下發信件。

㈨ 在Java中實現TCP協議編程中怎麼傳

在Java中實現TCP協議編程

ServerSocket:編寫TCP網路服務程序,首先要用到java.net.ServerSocket類用以創建伺服器Socket

構造方法:

ServerSocket(intport):創建綁定到特定埠的伺服器套接字

ServerSocket(intport,intbacklog):利用指定的backlog(伺服器忙時保持連接請求的等待客戶數量),創建伺服器套接字並將其綁定到指定的本地埠號。

ServerSocket(intport,intbacklog,InetAddressbindAddr):使用指定的埠、偵聽backlog和要綁定到的本地IP地址創建伺服器。

Socket:客戶端要與伺服器建立連接,必須先創建一個Socket對象

常用構造方法

Socket(Stringhost,intport):創建一個流套接字並將其連接到指定主機上的指定埠號。

Socket(InetAddressaddress,intport):創建一個流套接字並將其連接到指定IP地址的指定埠號。

伺服器端程序調用ServerSocket類中的accept()方法等待客戶端的連接請求,一旦accept()接收了客戶端連接請求,該方法返回一個與該客戶端建立了專線連接的Socket對象,不用程序去創建這個Socket對象。建立了連接的兩個Socket是以IO流的方式進行數據交換的,Java提供了Socket類中的getInputStream()返回Socket的輸入流對象,getOutputStream()返回Socket的輸出流對象。

TCP伺服器與TCP客戶端間的數據的接受圖示:

用TCP實現伺服器與客戶端的「聊天」:

實例代碼:

客戶端:

packagecom.hbsi.net;

importjava.net.Socket;

importjava.io.*;

publicclassTcpClient{

publicstaticvoidmain(String[]args)throwsException{

//1.建立tcp客戶端socket,要確定要連接的伺服器ip,port

Sockets=newSocket("192.168.49.87",9009);

//獲取鍵盤錄入

BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));

//2.通過建立的socket,獲取輸出流對象

//數據輸出給伺服器端

OutputStreamout=s.getOutputStream();

BufferedWriterbwout=newBufferedWriter(newOutputStreamWriter(out));

//獲取伺服器端返回的數據

//讀取伺服器端發過來的信息InputStreamReader()

BufferedReaderbrin=newBufferedReader(newInputStreamReader(

s.getInputStream()));

Stringline=null;

while((line=br.readLine())!=null){

if(line.equals("over"))

break;

bwout.write(line);

bwout.newLine();

bwout.flush();

Stringstr=brin.readLine();

System.out.println("server:"+str);

}

br.close();

s.close();

}

}

伺服器端:

packagecom.hbsi.net;

importjava.io.BufferedReader;

importjava.io.BufferedWriter;

importjava.io.InputStream;

importjava.io.InputStreamReader;

importjava.io.OutputStreamWriter;

importjava.net.ServerSocket;

importjava.net.Socket;

publicclassTcpServer{

publicstaticvoidmain(String[]args)throwsException{

//1.建立伺服器socket

ServerSocketss=newServerSocket(9009);

//2.調用accept()

Sockets=ss.accept();

System.out.println(s.getInetAddress().getHostAddress()

+"...connection");

//讀取客戶的信息的輸入流

InputStreamin=s.getInputStream();

BufferedReaderbrin=newBufferedReader(newInputStreamReader(in));

//向客戶端發送信息輸出流,服務端向客戶端返回信息OutputStreamWriter()

BufferedWriterbrout=newBufferedWriter(newOutputStreamWriter(

s.getOutputStream())); Stringline=null;

while((line=brin.readLine())!=null){

System.out.println("client:"+line);

brout.write(line.toUpperCase());//伺服器端收到信息後,將信息轉為大寫返回給客戶端toUpperCase()

brout.newLine();

brout.flush();

}

s.close();

ss.close();

}

}

㈩ java Socket通信原理

具體如下:

首先socket 通信是基於TCP/IP 網路層上的一種傳送方式,我們通常把TCP和UDP稱為傳輸層。其中UDP是一種面向無連接的傳輸層協議。UDP不關心對端是否真正收到了傳送過去的數據。

如果需要檢查對端是否收到分組數據包,或者對端是否連接到網路,則需要在應用程序中實現。UDP常用在分組數據較少或多播、廣播通信以及視頻通信等多媒體領域。

在這里我們不進行詳細討論,這里主要講解的是基於TCP/IP協議下的socket通信。

socket是基於應用服務與TCP/IP通信之間的一個抽象,他將TCP/IP協議裡面復雜的通信邏輯進行分裝。

服務端初始化ServerSocket,然後對指定的埠進行綁定,接著對埠及進行監聽,通過調用accept方法阻塞。

此時,如果客戶端有一個socket連接到服務端,那麼服務端通過監聽和accept方法可以與客戶端進行連接。

Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。

Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。

Java具有簡單性、面向對象、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點。Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等。

熱點內容
我的世界伺服器圈太大了怎麼辦 發布:2025-05-17 11:15:21 瀏覽:613
便宜的免費雲伺服器 發布:2025-05-17 11:08:50 瀏覽:775
中國頂級dhcp解析伺服器地址 發布:2025-05-17 11:06:27 瀏覽:32
php轉義html 發布:2025-05-17 11:04:00 瀏覽:566
鋼筋籠加密區規范 發布:2025-05-17 10:59:50 瀏覽:3
我的世界網易手機版主播伺服器房號 發布:2025-05-17 10:40:59 瀏覽:226
豎編譯 發布:2025-05-17 09:56:08 瀏覽:229
編程畫飛機 發布:2025-05-17 09:54:03 瀏覽:803
手機如何解鎖密碼屏幕鎖怎麼刪除 發布:2025-05-17 09:52:04 瀏覽:125
網路無法訪問網頁 發布:2025-05-17 09:51:40 瀏覽:651