java学习之服务端和客服端

学习了java的多线程,参考了一部分别人的代码,写了一个简单的客户端和服务器端的程序,服务器要在客户端之前运行,不然在运行客户端的时候会报错,然后服务器只能运行一次,多次运行也会报错,代码如下。。。
package com.jk.net;

import java.io.BufferedOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String ip ="192.168.0.43";
		int port = 333;
		try {
			//通过ip和port获得一个和主机端口对应的socket对象
			Socket m_socket = new Socket(ip, port);
			BufferedOutputStream out = new BufferedOutputStream(
					m_socket.getOutputStream());
			out.write("欢迎来到季科的博客".getBytes());
			out.close();
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
package www.jk.test;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Sever {
	public static void main(String[] args) {
		//设定当前端口
		int port = 333;
		try {
			//获得服务器口
			ServerSocket m_ServerSocket = new ServerSocket(port);
			while (true) {
				//阻塞,当有客户来调用时,创建一个socket对象
				Socket m_socket = m_ServerSocket.accept();
				//调用一个线程来处理当前对象
				myThread s = new myThread(m_socket);
				s.start();
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
package www.jk.test;

import java.io.BufferedInputStream;
import java.io.IOException;
import java.net.Socket;

public class myThread extends Thread {
	Socket m_socket;
   //将主机需要处理的socket对象用来初始化当前对象
	public myThread(Socket m_socket) {
		super();
		this.m_socket = m_socket;
	};

	@Override
	public void run() {
		// TODO Auto-generated method stub
		super.run();
		try {
			//开始读取数据
			BufferedInputStream bis = new BufferedInputStream(
					m_socket.getInputStream());
			byte buffer[] = new byte[12];
			while (bis.read(buffer) != -1) {
				String info = new String(buffer);
				System.out.println(info);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
当然,这个只是一个简单的单方面发送消息的客户端与服务器端,而且在读取文件的时候存在一点问题,希望看到博客的人指点如何处理文件读取的问题。

你可能感兴趣的:(java)