導航:首頁 > 編程語言 > socket程序java

socket程序java

發布時間:2022-08-18 22:01:25

java簡單的socket程序

是可以的,客戶端可以多次運行,前提是伺服器端必需採用多線程,或是非阻塞的方式來監聽客戶端的連接請求。伺服器端 思想,當客戶端連接到來時,利用這個socket創建一個新的線程,並啟動。當然,這只不過是最簡單的性能最差的方法。你可以使用線程池在java.util.concurrent包中有線程池的實現類Executors你可以通過它的ExecutorService executorService=Executors.newFixedThreadPool(int threadSize);來創建一個線程池。當客戶端連接到來時你可以創建一個線程類(handler)然後調用線程池的execute方法指行一個此線程。如:executorService.execute(new Handler(socket));。當然,如果你考慮性能,那麼你最好使用nio(非阻塞)來處理,在java.nio.channels包下面有相應的類能處理nio。你可以去查看相關的資料。。

Ⅱ 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應用程序、分布式系統和嵌入式系統應用程序等。

Ⅲ Java的Socket編程

要通信首先要建立socket鏈接。
1 ab客戶端與服務端建立socket鏈接
2 a客戶端發送消息到服務端
3 服務端收到消息後,發送到指定的b客戶端
4 b客戶端處理來自服務端的消息

Ⅳ java簡答題 如何創建socket連接的過程

java socket建立連接的過程如下:
socket

1、 首先調用Socket類的構造函數,以伺服器的指定的IP地址或指定的主機名和指定的埠號為參數,創建一個Socket流,在創建Socket流的過程中包含了向伺服器請求建立通訊連接的過程實現。
2、 建立了客戶端通訊Socket後。就可以使用Socket的方法getInputStream()和getOutputStream()來創建輸入/輸出流。這樣,使用Socket類後,網路輸入輸出也轉化為使用流對象的過程。
3、 使用輸入輸出流對象的相應方法讀寫位元組流數據,因為流連接著通訊所用的Socket,Socket又是和伺服器端建立連接的一個端點,因此數據將通過連接從伺服器得到或發向伺服器。這時我們就可以對位元組流數據按客戶端和伺服器之間的協議進行處理,完成雙方的通訊任務。
4、 待通訊任務完畢後,我們用流對象的close()方法來關閉用於網路通訊的輸入輸出流,在用Socket對象的close()方法來關閉Socket。

Ⅳ java 中socket實現通信的原理

1.
所謂Java
socket通信通常也稱作"套接字",用於描述IP地址和埠,是一個通信鏈的句柄。應用程序通常通過"套接字"向網路發出請求或者應答網路請求。
2.
socket
開發分客戶端與服務端
3.
服務端開啟服務監聽某一埠
4.
客戶端向此伺服器的這個埠發出請求,成功則會建立會話,形成通道.
5.
這個通道若不做其它操作會一直存在,就是所謂的長連接了,這時服務端與客戶端可以通過此通道進行即時通信

Ⅵ 用JAVA編寫一個socket通信程序。

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

publicclassServer{

publicstaticvoidmain(String[]args){
ServerSocketss;
Sockets;
try{
ss=newServerSocket(8888);
s=ss.accept();
InputStreamReaderisr=newInputStreamReader(s.getInputStream());
BufferedReaderbr=newBufferedReader(isr);

System.out.println(br.readLine());
br.close();
isr.close();

}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}


}

}

importjava.io.PrintWriter;
importjava.net.Socket;


publicclassClient{

publicstaticvoidmain(String[]args){

try{
Sockets=newSocket("127.0.0.1",8888);

PrintWriterpw=newPrintWriter(s.getOutputStream());
pw.write("helloserver");
pw.flush();

pw.close();
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}

}

}

Ⅶ 運用socket編寫一個JAVA程序

/*伺服器端程序:*/
mport java.net.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;

class ChatServer extends JFrame{
private JTextField inputBox;
private JTextArea outFrame;
private ObjectOutputStream outputS;
private ObjectInputStream inputS;
private ServerSocket toserver;
private Socket server;
private String message = "";
private int counter = 1;

ChatServer(){
super("Server");

Container container = getContentPane();
inputBox = new JTextField();
inputBox.setEditable(false);
//輸出
inputBox.addActionListener(
//監聽
new ActionListener(){
public void actionPerformed(ActionEvent ev)
{
sendMsg(ev.getActionCommand());
inputBox.setText(" ");
}
});
container.add(inputBox,BorderLayout.NORTH);
//輸出框
outFrame = new JTextArea();
container.add(new JScrollPane(outFrame),
BorderLayout.CENTER);
setSize(208,160);
setVisible(true);
}

public void connectServer(){

try{
//創建一個ServerSocket
toserver = new ServerSocket(4000);
while(true){
//等待連接
wait1Connection();
//獲取輸出流
getStreams();
//處理連接
processConnection();
//關閉連接
closeConnection();
++counter;

}
}
catch(EOFException eofException){
System.out.println("Client terminated connection");
}
catch(IOException ee){
ee.printStackTrace();

}
}
private void wait1Connection() throws IOException
{
outFrame.setText("等待連接....\n");
server = toserver.accept();
outFrame.append("連接 " + counter +
" 來自於:" + server.getInetAddress().getHostName());
}
private void getStreams() throws IOException
{
outputS = new ObjectOutputStream(server.getOutputStream());
outputS.flush();
inputS = new ObjectInputStream(server.getInputStream());
outFrame.append("\n成功建立連接。\n");
}
//處理客戶端連接:
private void processConnection() throws IOException
{
//連接成功
message = "成功連接到-->>^_^小粉條";
outputS.writeObject(message);
outputS.flush();//刷新輸出流
//輸入框
inputBox.setEditable(true);
//處理來自客戶端的消息
do{
//讀取消息;
try{
message = (String) inputS.readObject();
outFrame.append("\n" + message);

outFrame.setCaretPosition(outFrame.getText().length());
}
catch(ClassNotFoundException ex){
outFrame.append("\n UnKown object type received");
}
}
while(!message.equals("一肩秋色>> TERMINATE"));

}
private void closeConnection() throws IOException
{
outFrame.append("\n User terminated connction");
inputBox.setEditable(true);
outputS.close();
inputS.close();
server.close();
}
//向客戶端發送消息
private void sendMsg(String message)
{
try{
outputS.writeObject("^_^小粉條>> " + message);
outputS.flush();
outFrame.append("\n^_^小粉條>>" + message);
}catch(IOException em){
outFrame.append("\nError writing object");
}

}
}
public class chat {

public static void main(String[] args) {
// TODO code application logic here
ChatServer process = new ChatServer();
process.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
process.connectServer();
}
}

/*客戶端程序:*/
import java.io.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;

class CClient extends JFrame{
private JTextField inputBox;
private JTextArea outFrame;
private ObjectOutputStream outputS;
private ObjectInputStream inputS;
private String message = "";
private String ChatServer;
private Socket toclient;
CClient(String srhost)
{
super("Client");
ChatServer = srhost;
//設置客戶端連接的伺服器
Container container = getContentPane();
inputBox = new JTextField();
//建立輸入框
inputBox.setEditable(false);
inputBox.addActionListener(
//監聽
new ActionListener(){
public void actionPerformed(ActionEvent e)
{
sendMsg(e.getActionCommand());
inputBox.setText(" ");
}
}
);
container.add(inputBox,BorderLayout.NORTH);
//輸出框
outFrame = new JTextArea();
container.add(new JScrollPane(outFrame),
BorderLayout.CENTER);
setSize(208,160);
setVisible(true);
}
public void connectClient()
{
try{

//用於連接的Socket
connect1Server();
//得到輸入輸出流
getStreams();
//處理連接
processConnection();
//關閉連接
closeConnection();
}
catch(EOFException eofException){
System.out.println("Client terminated connection");
}
catch(IOException ee){
ee.printStackTrace();

}
}
//捕獲異常
private void getStreams() throws IOException
{
outputS = new ObjectOutputStream(toclient.getOutputStream());
outputS.flush();
inputS = new ObjectInputStream(toclient.getInputStream());
outFrame.append("\n成功建立連接。\n");
}
private void connect1Server() throws IOException
{
outFrame.setText("連接中....\n");
toclient = new Socket(InetAddress.getByName(ChatServer),4000);
outFrame.append("連接至:" + toclient.getInetAddress().getHostName());
}
private void processConnection() throws IOException
{

inputBox.setEditable(true);
//處理來自客戶端的消息
do{
//讀取消息;
try{
message = (String) inputS.readObject();
outFrame.append("\n" + message);

outFrame.setCaretPosition(outFrame.getText().length());
}
catch(ClassNotFoundException ex){
outFrame.append("\n UnKown object type received");
}
}
while(!message.equals("^_^小粉條>> TERMINATE"));

}
private void closeConnection() throws IOException
{
outFrame.append("\n 關閉連接");
inputBox.setEditable(false);
outputS.close();
inputS.close();
toclient.close();
}
//向伺服器端發送消息
private void sendMsg(String message)
{
try{
outputS.writeObject("一肩秋色>> " + message);
outputS.flush();
outFrame.append("\n一肩秋色>>" + message);
}catch(IOException em){
outFrame.append("\nError writing object");
}
}

}
public class ChatClient {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
CClient beginning;
if(args.length == 0)
beginning = new CClient("192.168.1.100");//連接到IP
else
beginning = new CClient(args[0]);
beginning.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
beginning.connectClient();
}

}
//無聊寫的簡單Socket程序,你把裡面的名字改下應該就可以用

Ⅷ 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實現一個回聲伺服器,就是伺服器會將客戶端發送過來的數據傳回給客戶端。

閱讀全文

與socket程序java相關的資料

熱點內容
程序員畢業時間 瀏覽:279
程序員用戶免費軟體 瀏覽:751
51單片機匯編語言指令 瀏覽:139
女程序員好難 瀏覽:687
三田壓縮機與電裝 瀏覽:710
重生細胞安卓版沒鍵盤怎麼玩 瀏覽:994
小米nfc手機刷加密卡 瀏覽:290
linux如何下載文件 瀏覽:808
linuxrpm依賴 瀏覽:370
匯率pdf 瀏覽:353
帶分數的演算法思維 瀏覽:115
如何讓伺服器支持asp文件 瀏覽:48
python網站自動簽到腳本 瀏覽:888
程序員和語言框架哪個重要 瀏覽:777
文件伺服器上面有什麼 瀏覽:383
需求不清是程序員面臨的真正挑戰 瀏覽:953
放療有關的演算法 瀏覽:750
java和python交互 瀏覽:648
貴州網路伺服器機櫃雲主機 瀏覽:267
未來番禺程序員待遇 瀏覽:213