个人练习(第一天)

练习(第一天)

最近因为要编写实验室的服务器,所以把之前Java的网络编程部分重新捡起来练习一下,也算是复习一下socket模块
以下是代码

##server
package com.icss.ch01;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class server {
	public static String line;
	public static DataInputStream is;
	public static DataOutputStream os;
	public static BufferedReader sin ;
	public static void main(String[] args) throws IOException {
		send1 se1=new send1();
		read1 re1 =new read1();
		ServerSocket server = null;
		try {
			server = new ServerSocket(4700);
			System.out.println("服务器启动成功");
		} catch (IOException e) {
			System.out.println("服务器启动失败");
		}
		Socket socket = null;
		try {
			socket = server.accept();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		is = new DataInputStream(socket.getInputStream());
		os = new DataOutputStream(socket.getOutputStream());
		sin = new BufferedReader(new InputStreamReader(System.in));
		System.out.println("client"+is.readUTF());
		line = sin.readLine();
		se1.start();
		re1.start();
		os.close();
		is.close();
		socket.close();
		}		
		
	}

##client
package com.icss.ch01;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class Client {
	public static String readline;
	static Socket socket ;
	static BufferedReader sin;
	static PrintWriter os ;
	static DataInputStream is ;
	public static void main(String[] args) throws IOException {
		send sen = new send();
		read r = new read();
		socket = new Socket("127.0.0.1",4700);
		sin = new BufferedReader(new InputStreamReader(System.in));
		os = new PrintWriter(socket.getOutputStream());
		is = new DataInputStream(socket.getInputStream());
		readline = sin.readLine();
//			os.println(readline);
//			os.flush();
//			readline = sin.readLine();
		sen.start();
		r.start();
		os.close();
		is.close();
		socket.close();
		
	}

}

##send
package com.icss.ch01;

public class send extends Thread {

	public void run() {
		while(!Client.readline.equals("exit")) {
		Client.os.println(Client.readline);
		Client.os.flush();
		}
	}
}

##read
package com.icss.ch01;

import java.io.IOException;

public class read extends Thread {
	public void run() {
		while(!Client.readline.equals("exit")) {
			try {
				System.out.println("server"+Client.is.readUTF());
				Client.readline = Client.sin.readLine();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			}
	}


##send1
package com.icss.ch01;

import java.io.IOException;

public class send1 extends Thread {
	public void run() {
		while(!server.line.equals("exit")) {
			try {
				server.os.writeUTF(server.line);
				server.os.flush();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}
	}

##read1
package com.icss.ch01;

import java.io.IOException;

public class read1 extends Thread {
	public void run() {
		while(!server.line.equals("exit")) {
			try {
				System.out.println("Client"+server.is.readUTF());
				server.line = server.sin.readLine();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}
	}

server是服务器端,client是客户端,send,read,send1,read1是我做的子线程,目的是为了实现读写操作不阻塞。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值