简单的Socket编程

*************************************************************

MultiTalkServer.java是服务器程序

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

public class MultiTalkServer {
	static int clientnum=0;
	public static void main(String args[])throws IOException{
		ServerSocket serverSocket = null;
		boolean listening = true;
		try{
			//创建一个ServerSocket在端口4800监听客户请求
			serverSocket = new ServerSocket(4800);
		}catch(IOException e){
			System.out.print(e);
			System.exit(-1);
		} 
		while(listening){
			new ServerThread(serverSocket.accept(),clientnum).start();
			clientnum++;
		}
		serverSocket.close();
	}
}

*************************************************************

ServerThread.java是服务器程序

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

public class ServerThread extends Thread{
	Socket socket = null;  //		保存于本线程相关的Socket对象
	int clientnum;         //保存本线程的客户计数
	public ServerThread(Socket socket,int num){
		this.socket=socket;    //  初始化Socket对象
		clientnum=num+1;       //  初始化 clientnum变量
	}
	public void run(){  //线程主体
		try{
			String line;
			//由Socket对象得到输入流,并构造相应的BufferedReader对象
			BufferedReader is=new BufferedReader(new 
			InputStreamReader(socket.getInputStream()));
			//由Socket对象得到输出流,并构造PrintWriter对象
			PrintWriter os=new PrintWriter(socket.getOutputStream());
			//由系统标准输入设备构造BufferefReader对象
			BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
			//在显示屏上输出从客户端读入的字符串
			System.out.println("Client:"+clientnum+is.readLine());
			//从标准输入读入一字符串
			line=sin.readLine();
			while(!line.equals("bye")){
				os.println(line);
				os.flush();
				System.out.println("Server:"+line);
				System.out.println("Client:"+is.readLine());
				line=sin.readLine();
			}
			os.close();
			is.close();
			socket.close();
		}catch(Exception e){
			System.out.println("Error:"+e);  //在屏幕上显示错误信息
		}	
	}
}

*************************************************************

TalkClient.java是客户端程序

import java.io.*;
import java.net.*;
public class TalkClient {
	public static void main(String args[]){
		try{
			//向本机的4800端口发送客户请求
			Socket socket=new Socket("192.168.1.101",4800);
			//由系统标准输入设备构造BufferReader对象
			BufferedReader sin=new BufferedReader(
					new InputStreamReader(System.in)
			);
			//由Socket对象得到输出流,并构造PrintWriter对象
			PrintWriter os=new PrintWriter(socket.getOutputStream());
			//由Socket对象得到输入流,并构造相应的BufferedReader对象
			BufferedReader is=new BufferedReader(
					new InputStreamReader(socket.getInputStream())
			);
			String readline;
			readline=sin.readLine();   //从系统标准输入上读入一串字符串
			//若读入字符串为bye则停止循环
			while(!readline.equals("bye")){
				//将输入的字符串输出到Server
				os.println(readline);
				os.flush();
				//在显示屏上输出读入字符串
				System.out.println("Client:"+readline);
				System.out.println("Server:"+is.readLine());
				readline=sin.readLine();
			}
			os.close();
			is.close();
			socket.close();
		}catch(Exception e){
			System.out.println("Error"+e);
		}		
	}
}

只要知道server的ip地址,然后使得客户端和服务器的端口号和ipv4地址一致,就可以进行简单的通信了。











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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值