tcp通讯的方式并使用socket建立客户端与服务器的通信的过程

原创 2016年08月31日 16:40:49

tcp是一种通讯方式,也叫做tcp协议,是用来规范socket数据交互的。

socket是用来做通讯的,它的作用是发送数据和接受数据。举例说两个人打电话,电话就相当于是socket,而打电话的人相当于ip。

下面是一个java实现两个程序之间通信的例子:

服务端:

服务端要做的工作是:

1.创建服务端serversocket,指定端口号和ip地址;

2.调用accept()方法开始监听;

3.调用getInputStream()方法 获取输入流,读取客户端信息;

4.调用getOutputStream()方法获取输出流。响应客户端的请求;

5.别忘了关闭资源。




	package zjyang.server;
	
	import java.io.BufferedReader;
	import java.io.IOException;
	import java.io.InputStream;
	import java.io.InputStreamReader;
	import java.io.OutputStream;
	import java.io.PrintWriter;
	import java.net.ServerSocket;
	import java.net.Socket;
	
	public class SocketServer {
	
		public static int port = 8888;//客户端端口号
		public static void main(String[] args){
			SocketServer socketServer = new SocketServer();
			socketServer.start();
		}
		
		public void start(){
			try {
				//1.创建serversocket
				ServerSocket serverSocket = new ServerSocket(port);
				//2.调用accept()方法开始监听
				Socket socket = serverSocket.accept();
				//3. 获取输入流,读取客户端信息
	            InputStream is = socket.getInputStream();//字节输入流
	            InputStreamReader isr = new InputStreamReader(is);//将字节转换成字符
	            BufferedReader br = new BufferedReader(isr);//为输入流添加缓冲
	            String info = null;
	            while((info = br.readLine()) != null)//循环读取客户端信息
	            {
	                System.out.println("我是服务器,客户端说:    "+info);
	            }
	            socket.shutdownInput();//关闭输入流,
	            //4.获取输出流。响应客户端的请求
	            OutputStream os = socket.getOutputStream();
	            PrintWriter pw = new PrintWriter(os);
	            pw.write("欢迎您!");
	            pw.flush();//刷新缓存
	            
	            //5.关闭资源
	            pw.close();
	            os.close();
	            br.close();
	            isr.close();
	            is.close();
	            socket.close();
	            serverSocket.close();
			} catch (IOException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
		}
	}

客户端:

客户端要做的工作是:

1.创建客户端Socket,指定服务器端口号和地址;

2.调用getOutputStream()方法获取输出流,向服务器端发送信息;

3.调用getInputStream()方法获取输入流,并读取服务器端的响应信息;

4.别忘了关闭资源。



package zjyang.client;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class SocketClient {

	public static void main(String[] args) {
		SocketClient socketClient = new SocketClient();
		socketClient.start();
	}
	
	private void start(){
		try {
			//1.创建客户端Socket,指定服务器端口号和地址
			Socket socket = new Socket("localhost",8888);
			//指定本地地址,端口号为8888
	        //2.获取输出流,向服务器端发送信息
	        OutputStream os = socket.getOutputStream();//字节输出流
	        PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流
	        pw.write("用户名: admin;密码: 123 ");
	        pw.flush();
	        socket.shutdownOutput();
	        //3.获取输入流,并读取服务器端的响应信息
            InputStream is = socket.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String info = null;
            while ((info = br.readLine()) != null)
            {
                System.out.println("我是客户端,服务器说:    "+info);
            }
            //4.关闭资源
            br.close();
            is.close();
            pw.close();
            os.close();
            socket.close();
		} catch (UnknownHostException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} catch (IOException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
	}
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

【转】Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)

ZERO、前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,如果不当,还望指教。 一、Socket通信简介  Android与服务器的通信方式主要有两种,一是Http...

Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)

一、Socket通信简介     Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信。两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通...

Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)

ZERO、前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,如果不当,还望指教。 一、Socket通信简介  Android与服务器的通信方式...

Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)

ZERO、前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,如果不当,还望指教。 一、Socket通信简介  Android与服务器的通信方式...

Socket 通信原理 -- Android客户端和服务器以TCP&&UDP方式互通

一、Socket通信简介  Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信。 Http 是“请求—响应”方式,即在请求时建立连接通道,当客户端向服务器发送请求后...

Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)

ZERO、前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,如果不当,还望指教。 一、Socket通信简介  Android与服务器的通信方式...

Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)

一、Socket通信简介  Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信。两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道...

Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)

文章转自:http://blog.csdn.net/mad1989/article/details/9147661 一、Socket通信简介  Android与服务器的通信方式...

Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)

前言: 最近有个Android 初学者问我,他面试的时候遇到个问题:(什么是socket通信)。我总结了下,写了篇博客给他看: 一、Socket通信简介  Android与服务器的通信方...

Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)

原文来自:http://blog.csdn.net/mad1989/article/details/9147661 ZERO、前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)