java socket編程(一)

在字符界面下,利用socket從client端向server端傳送文件。

java version "1.6.0_26

server:

import java.io.*;
import java.net.*;

public class Server {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ServerSocket serverSocket = null;
		Socket socket = null;
		String string = null;
		DataOutputStream outputStream = null;
		DataInputStream inputStream = null;
		try {
			serverSocket = new ServerSocket(4441);
		} catch (IOException e1) {
			// TODO: handle exception
			System.out.println("ERROR1: " + e1);
		}
		try {
			while (true) {
				try {
					socket = serverSocket.accept(); // block
					inputStream = new DataInputStream(socket.getInputStream());
					outputStream = new DataOutputStream(
							socket.getOutputStream());

					outputStream.writeUTF("Hello, I am server!");
					while ((string = inputStream.readUTF()) != null) {
						RandomAccessFile accessFile = new RandomAccessFile(
								"rec.txt", "rw");
						accessFile.seek(accessFile.length());
						accessFile.writeBytes(string + "\n");
						accessFile.close();
					}
				} catch (EOFException e2) {
					inputStream.close();
					outputStream.close();
				}
			}
		} catch (IOException e3) {
			// TODO: handle exception
			System.out.println("ERROR2: " + e3);
		}
	}
}

client:

import java.io.*;
import java.net.*;

public class Client {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String string = null;
		Socket mySocket;
		DataInputStream inputStream = null;
		DataOutputStream outputStream = null;

		try {
			// create a connect
			mySocket = new Socket(InetAddress.getLocalHost(), 4441);
			inputStream = new DataInputStream(mySocket.getInputStream());
			outputStream = new DataOutputStream(mySocket.getOutputStream());

			// receive a string from server
			string = inputStream.readUTF();
			if (string != null)
				System.out.println(string);

			// send a file to server
			String FilePath;
			InputStreamReader inputStreamReader = new InputStreamReader(
					System.in);
			BufferedReader bufferedReader = new BufferedReader(
					inputStreamReader);
			System.out.println("please input a file path:");
			FilePath = bufferedReader.readLine();
			File file = new File(FilePath);
			if (file.exists()) {
				if (file.isDirectory()) {
					System.out.println(FilePath + " is a directory.");
				} else {
					RandomAccessFile accessFile = new RandomAccessFile(file,
							"r");
					String string2 = null;
					while ((string2 = accessFile.readLine()) != null)
						outputStream.writeUTF(string2);
					
					inputStream.close();
					outputStream.close();
					mySocket.close();
				}
			} else
				System.out.println(FilePath + " is not exit");
		} catch (IOException ex) {
			// TODO: handle exception
			System.out.println("ERROR: " + ex);
		}
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章