1、官方 Socket 文件(Client 端用來與 Server 連線的 Socket)
2、官方 ServerSocket 文件(Server 端用來接受 Client 端連線的 Socket)
Client 端的語法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
InetAddress addressOfServer = InetAddress.getByName( "127.0.0.1" ); int portOfServer = 22 ; // File to be transmitted File file = new File( "/home/user/test.img" ); // Create buffer byte [] buffer = new byte [ 2048 ]; int bytesReaded; // Socket connection for connecting to the server Socket socketFromClient = null ; // Output stream for transmitting file to the server DataOutputStream outputStream = null ; // Input stream for reading local file FileInputStream fis = null ; try { // Create socket socketFromClient = new Socket(addressOfServer, portOfServer); // Create output stream for transmitting file outputStream = new DataOutputStream(socketFromClient.getOutputStream()); // Create input Stream for reading file FileInputStream fis = new FileInputStream(file); // Start transmitting while ( (bytesReaded = fis.read(buffer)) > - 1 ) { outputStream.write(buffer, 0 , bytesReaded); outputStream.flush(); } } finally { // Close the stream objects if (outputStream != null ) outputStream.close(); if (fis != null ) fis.close(); } // Close the connection of socket if (socketFromClient != null ) socketFromClient.close(); |
Server 端語法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
int portOfServer = 22 ; // Start listening to port 22 ServerSocket serverSocket = new ServerSocket(serverPort); Socket clientSocket = serverSocket.accept(); // Reader for accepting the transmission from client BufferedInputStream bis = null ; DataInputStream dis = null ; // File writer for writing the file transmitted from the client File writtenFile = null ; FileWriter fw = null ; BufferedWriter bw = null ; try { // Get the address of the connecting client String addressOfClient = clientSocket.getRemoteSocketAddress().toString(); // Get the stream which the client tranmits bis = new BufferedInputStream(clientSocket.getInputStream()); dis = new DataInputStream(bis); // Create file writer writtenFile = new File( "transmittedFile" ); fw = new FileWriter(writtenFile); bw = new BufferedWriter(fw); // Create buffer byte [] buffer = new byte [ 2048 ]; int bytesReaded; // Accept and write the file while ( (bytesReaded = dis.read(buffer)) > - 1 ) { bw.write(buffer, 0 , bytesReaded); bw.flush(); } } finally { // Close the stream and writer objects if (bw != null ) bw.close(); if (fw != null ) fw.close(); if (dis != null ) dis.close(); if (bis != null ) bis.close(); } |
如果只是要傳送字串資料,而不是傳送檔案的話,作法好像是一樣的,可以參考以下的連結。
參考資料:
3、簡單的Socket Client Server
沒有留言:
張貼留言