把困难踩在脚下

迎难而上

 

初写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协议,还有很多东西没有写出来,有不对的地方希望大家批评指正,没时间了我还要上课,先写到这吧。

posted on 2010-11-12 09:30 冯魁 阅读(259) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

公告

快乐每一天!

Everything is an object!

常用链接

留言簿(2)

随笔档案

学习网站

搜索

最新评论

阅读排行榜

评论排行榜