java的Socket编程实现客户端与服务端的通信-----------单线程原型版 多线程稍后记录

笔记整理:建立客户服务对话,采用流通道建立连接,使用ServerSocket类,创建的对象被Socket监听器 监听,建立阻塞等待用户端口接入(客户端,创建Socket监听器,将服务端的ip与端口号提供,建立了连接)

建立通信:客户端,服务端分别采用 输入输出流,发送请求,接收请求,达到互联的目的。

* @param args

* 客户端请求服务器

* 创建Socket。指定服务器IP+端口号

* 使用输出流,发送请求数据给服务器

* 使用输入流,接受响应数据到客户端(等待)

*

* 服务器响应客户端

* 使用输入流,接受请求数据到服务器(等待)

* 使用输出流,发送响应数据给客户端

* @throws UnknownHostException

*/下面代码实现客户端与服务端基本互联

public class ServerDemo {

	

	public static void main(String[] args) throws UnknownHostException {
		// Socket编程-Server
		
		
	    InetAddress host = InetAddress.getLocalHost();//获取ip及端口
       String ip =host.getHostAddress();
       System.out.println("本机ip地址:" + ip);
		
		try {
		ServerSocket serversocket =new ServerSocket(9999);
		
		
		
		System.out.println("服务端启动,等待客户连接~~~~~~");
		
		Socket server = serversocket.accept();//这是个阻塞,客户端来了才会运行
		
		//这里服务器启动,等待客户端加入
		System.out.println("连接过来了"+server);//客户端加入打印

		
		System.out.println("客户端连接好了!");
		InputStream is = server.getInputStream();
		
	    server.close();
		serversocket.close();
		
		
		}catch(IOException e){
			
			
		}

	}

}
//**************************************************************



public class ClientDemo {

	public static void main(String[] args) {
		// Socket编程 -Client

		String ip ="127.0.0.1";//服务器ip
		
		int port =9999;//服务器端口
		try {
			
		Socket client = new Socket(ip,port);	
		InputStream is =client.getInputStream();
		BufferedReader br =new BufferedReader(new InputStreamReader(is));
		
		String rl =br.readLine();
		System.out.println("服务器发来的消息"+rl);
		 OutputStream os = (OutputStream) client.getOutputStream();
		 
		 String msg ="Look this, I'm  here!  \n";
		 os.write(msg.getBytes());
		 os.flush();
		
		}catch(UnknownElementException e){
		
		}catch(IOException e) {
		
	}

}
	}

下面是实现简易通信

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.net.ServerSocket;
import java.net.Socket;

public class DemoServer {

	public static void main(String[] args) {
		// Server
		
		try {
			
			
			ServerSocket serverSocket =new ServerSocket(8888);//创建端口
		
			System.out.println("服务器已启动,等待客户连接···············");
			Socket server = serverSocket.accept();
		
			System.out.println(serverSocket.isBound());
			
			
			//服务器准备好要发送的内容通过字符输出缓冲流
		
			OutputStream ops = server.getOutputStream();
			
			BufferedWriter bfw =new BufferedWriter(new OutputStreamWriter(ops));
			
			String strs ="复仇者联盟 纪念手办:队长,免费送要不要!\n";
			
			bfw.write(strs);
			bfw.flush();
			
			
			//服务器接收客户端发来的消息,通过字符缓冲输入流
			
			InputStream ism = server.getInputStream();
			
			InputStreamReader isr =new InputStreamReader(ism);
			BufferedReader bfd = new  BufferedReader(isr);//字符缓存读取流
			String sig =bfd.readLine();
			
			System.out.println("客户端Server说:"+sig);
			
//			server.close();
//			serverSocket.close();
			System.out.println("已收到来自用户的问候!"+server);
		
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}
//******************************************************************

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

public class DemoClient {

	public static void main(String[] args) {
		// Client
		
		
		try {
			
			Socket socket =new Socket("127.0.0.1",8888);
			System.out.println("找到了该端口,端口:"+socket);
			
			InetAddress ia = socket.getInetAddress();//获取IP,主机地址的方法
			
			//客户端通过字符输入缓冲流 读取服务器内容
			InputStream ism =socket.getInputStream();
			
			BufferedReader bfd =new BufferedReader(new InputStreamReader(ism));
			String strt =bfd.readLine();
			
			System.out.println("服务器Server说:"+strt);
		
			
			
			//客户通过字符输出缓冲流编辑内容发送服务器
			OutputStream ops =socket.getOutputStream();
			OutputStreamWriter isr =new OutputStreamWriter(ops);
		
			BufferedWriter  bfw = new BufferedWriter(isr);
			
			String str ="好久不见,别来无恙   \n";//客户Client说
			
			bfw.write(str);
			bfw.flush();
			socket.close();
			System.out.println("客户端消息发送成功!服务器名称:"+ia.getHostName()+",ip:"+ia.getHostAddress());
			bfw.close();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		}catch(IOException e) {
			
			
		}

	}

}

发布了22 篇原创文章 · 获赞 0 · 访问量 380

猜你喜欢

转载自blog.csdn.net/weixin_44657829/article/details/104934198