初写TCP通讯程序

Tcp通讯协议是基于OSI标准协议,有应用层、传输层、网络层、物理层+数据链路层。TCP采用三次握手, 所谓“三次握手”就是A向B发出链接请求,B向A发出收到消息,而后A向B发出收到消息。这样能够提升通讯链接的可靠性。TCP通讯能够用Socket套接字实现,Socket正如它的英文名称“插座”同样,两台电脑要想实现通讯,每台电脑就是一个插座,用一根虚拟的导线将两个插座链接一块儿,就能够实现通讯。
下面看程序:
先看服务器端:
 
package  com.dr.me; 

import  java.io.BufferedReader;
import  java.io.IOException;
import  java.io.InputStreamReader;
import  java.io.PrintStream;
import  java.net.ServerSocket;
import  java.net.Socket; 

public   class  MyServer  {
    
public static void main(String args[]) throws IOException
    
{
        
//建立一个ServerSocket对象实例
        ServerSocket  ss=new ServerSocket(1526);
        
//建立一个Socket实例对象,用来接受客户端传过来的Socket
        Socket client=null;
        System.out.println(
"等待客户端的链接、、、、、");
        
//程序运行到此就会阻塞,除非有客户端链接
        client=ss.accept();
        System.out.println(
"有客户链接上了---");
        
//建立和客户端的通讯通道
        BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
        PrintStream out
=new PrintStream(client.getOutputStream());
        
//向客户端输出信息
        out.println("Hello how are you?");
        
//关闭输入输出流
        in.close();
        out.close();
    }
 

}
 

在此程序中首先建立了一个ServerSocket对象,并指明了它的端口,客户端经过IP和这个端口和服务器端进行链接。程序运行到此:
client=ss.accept();就不在往下运行直到有客户端链接上,在继续往下执行。经过   BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
        PrintStream out=new PrintStream(client.getOutputStream());
这条语句就和客户端创建了一根虚拟的通道。
看客户端程序:
 
package  com.dr.me; 

import  java.io.BufferedReader;
import  java.io.IOException;
import  java.io.InputStreamReader;
import  java.net.Socket;
import  java.net.UnknownHostException; 

public   class  MyClient  {
    
public static void main(String args[]) throws UnknownHostException, IOException
    
{
        
//建立Socket实例对象
        Socket client=new Socket("LocalHost",1526);
        
//建立String对象用来盛放从服务器端传过来的信息,起一个缓冲做用
        String str=null;
        
//和服务器端创建通讯链接
        BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
        
//读取服务器端发过来的信息放在String对象中
        str=in.readLine();
        
//把信息输出到控制台上
        System.out.println(str);
    }
 

}
 

客户端程序:经过
Socket client=new Socket("LocalHost",1526);
新建一个Socket对象,并指明了要向哪台电脑创建链接及该电脑的端口,“LocalHost”是本台电脑的IP,也能够写成“127.0.0.1”,若是和其余电脑链接则改成那台电脑的IP。端口号必定要和服务器端的客户端一致,不然出现异常。
运行时首先启动服务器端程序,而后再启动客户端程序。
运行结果:
服务器端控制台显示:
启动服务器端显示:
1
客户端链接后显示:
3
客户端控制台显示:
2
这个程序只是简单说明了一下TCP协议,还有不少东西没有写出来,有不对的地方但愿你们批评指正,没时间了我还要上课,先写到这吧。
相关文章
相关标签/搜索