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();
		}
	}
}



TCP连接的三次握手和Socket建立网络连接的步骤

TCP连接的三次握手: 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;   第二次握手:服务器收到syn包,必须确认客户的SYN(a...
  • PersonSky
  • PersonSky
  • 2015年10月14日 11:59
  • 1871

使用SOCKET实现TCP/IP协议的通讯

一、原理:      首先要理解基本的原理,2台电脑间实现TCP通讯,首先要建立起连接,在这里要提到服务器端与客户端,两个的区别通俗讲就是主动与被动的关系,两个人对话,肯定是先有人先发起会话,要不然...
  • a497785609
  • a497785609
  • 2013年10月19日 15:18
  • 68651

客户端到服务器端的通信过程及原理(很清晰,保证看后顿悟)

学习任何东西,我们只要搞清楚其原理,就会触类旁通。现在结和我所学,我想总结一下客户端到服务器端的通信过程。只有明白了原理,我们才会明白当我们程序开发过程中错误的问题会出现在那,才会更好的解决问题。 ...
  • qq_29894329
  • qq_29894329
  • 2016年03月28日 02:06
  • 12435

java-基本的Socket编程-实现服务器端和客户端通信

基本的Socket编程: 本实例介绍Socket编程的基本步骤。启动Socket服务后,再打开Socket刻画段,在输入框中输入消息,然后发送给服务器端,服务器端将收到的消息返回到客户端。关键技术:...
  • zlz18225318697
  • zlz18225318697
  • 2016年10月12日 17:48
  • 2837

C#实现服务器和客户端之间通信

TCP  套接字编程 服务器端实现步骤: 1、使用Socket类创建套接字。 2、利用Bind方法将创建的套接字绑定到指定的地址结构。 3、利用Listen方法设置套接字为监听模式,使得服务器...
  • dl962454
  • dl962454
  • 2018年01月06日 18:45
  • 91

Linux Socket编程:基于TCP/IP的客户端与服务端通讯实例

Linux Socket编程:基于TCP/IP的客户端与服务端通讯实例服务端代码#include #include #include #include #include #include i...
  • techping
  • techping
  • 2017年03月29日 17:49
  • 1281

TCP/IP通信 客户端、服务器 实例

本篇文章实现了一个基于TCP 的一个非常简单的客户/服务器通信程序实例。该程序中通讯协议使用的是面向连接的TCP协议SOCK_STREAM, 服务器的ip地址为本地地址即: 127.0.0.1,...
  • qingzai_
  • qingzai_
  • 2016年03月22日 14:00
  • 1359

网络通信过程-非常详细

请用心去阅读一下文档,谢谢  Internet中一台计算机访问Web服务器的全部过程,从中可以窥探Internet是如何工作的,本讲中会涉及到网络(或Internet)的专业术语、概念及In...
  • lihuibo128
  • lihuibo128
  • 2014年08月26日 09:39
  • 4017

客户端与服务器程序通信

客户端与服务器通信方式的简介。
  • qq_33721382
  • qq_33721382
  • 2017年07月11日 10:17
  • 198

Http和TCP通信流程解析

转自:http://blog.csdn.net/phunxm/article/details/5836034 =============================================...
  • u012398362
  • u012398362
  • 2016年08月10日 15:18
  • 2194
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:tcp通讯的方式并使用socket建立客户端与服务器的通信的过程
举报原因:
原因补充:

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