javatcp發送
『壹』 java如何通過tcp向指定的IP發送指令並獲得返回的包
以下是一個展示java使用tcp通訊的簡單例子,包括伺服器和客戶端代碼:
/**
*TCPServer
*/
import java.io.*;
import java.net.*;
class TCPServer{
public static void main(String[] args)throws IOException{
ServerSocket listen = new ServerSocket(5050);
Socket server = listen.accept();
InputStream in = server.getInputStream();
OutputStream out = server.getOutputStream();
char c = (char)in.read();
System.out.println("收到:" + c);
out.write('s');
out.close();
in.close();
server.close();
listen.close();
}
}
/**
*TCPClient
*/
import java.io.*;
import java.net.*;
class TCPClient{
public static void main(String[] args)throws IOException{
Socket client = new Socket("127.0.0.1" , 5050);
InputStream in = client.getInputStream();
OutputStream out = client.getOutputStream();
out.write('c');
char c = (char)in.read();
System.out.println("收到:" + c);
out.close();
in.close();
client.close();
}
}
『貳』 java如何通過tcp向指定的IP發送指令並獲得返回的包
以下是一個展示java使用tcp通訊的簡單例子,包括伺服器和客戶端代碼:x0dx0ax0dx0a/**x0dx0a *TCPServerx0dx0a */x0dx0aimport java.io.*;x0dx0aimport java.net.*;x0dx0aclass TCPServer{x0dx0a public static void main(String[] args)throws IOException{x0dx0a ServerSocket listen = new ServerSocket(5050);x0dx0a x0dx0a Socket server = listen.accept();x0dx0a InputStream in = server.getInputStream();x0dx0a OutputStream out = server.getOutputStream();x0dx0a char c = (char)in.read();x0dx0a System.out.println("收到:" + c);x0dx0a out.write('s');x0dx0a x0dx0a out.close();x0dx0a in.close();x0dx0a server.close();x0dx0a listen.close();x0dx0a }x0dx0a}x0dx0ax0dx0a/**x0dx0a *TCPClientx0dx0a */x0dx0aimport java.io.*;x0dx0aimport java.net.*;x0dx0aclass TCPClient{x0dx0a public static void main(String[] args)throws IOException{x0dx0a Socket client = new Socket("127.0.0.1" , 5050);x0dx0a InputStream in = client.getInputStream();x0dx0a OutputStream out = client.getOutputStream();x0dx0a x0dx0a out.write('c');x0dx0a char c = (char)in.read();x0dx0a System.out.println("收到:" + c);x0dx0a out.close();x0dx0a in.close();x0dx0a client.close();x0dx0a }x0dx0a}
『叄』 java中怎麼用tcp/ip將伺服器的消息發送給多個用戶
在Java中使用TCP/IP將伺服器的消息發送給多個用戶時,首先你需要通過accept方法獲取到一個Socket,這個Socket是連接到客戶端的Socket,用於實現兩者之間的通信。
為了實現這個功能,我創建了一個ServerThread類,用於處理與每個客戶端的交互。在ServerThread類中,我為Socket創建了一個成員變數so,並通過構造函數對其進行初始化。這個類還包含兩個方法:send和receive,分別用於發送和接收消息。
為了實現接收消息,我創建了一個內部類Thread,並在其中定義了run方法。這個Thread類繼承自Thread,並重寫了run方法,以實現接收客戶端發送的消息。
接著,我創建了一個ServerThread對象tt,並將其與特定的Socket關聯起來。為了能夠向每個客戶端發送消息,我將ServerThread對象保存在一個集合中。這樣,當需要向某個特定客戶端發送消息時,可以從集合中取出對應的ServerThread對象,調用其send方法,並將要發送的消息對象作為參數傳遞。
為了實現發送消息,我需要在send方法中添加邏輯,將消息通過Socket發送給客戶端。這個過程涉及到使用OutputStream對象將消息寫入Socket的輸出流中。
通過這種方式,可以實現伺服器向多個客戶端發送消息的功能。每個客戶端的交互都由一個獨立的ServerThread處理,這樣可以確保消息發送的可靠性和並發性。
此外,還可以進一步優化這個設計,例如通過多線程處理多個客戶端的請求,提高伺服器的並發性能。在實際應用中,還需要考慮網路錯誤處理、超時處理等問題,以確保系統的穩定性和可靠性。
總之,通過這種方式,可以實現Java中使用TCP/IP將伺服器的消息發送給多個用戶的功能。這為構建高性能的網路應用提供了堅實的基礎。
『肆』 在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();
}
}