您的位置:首页 > 理论基础 > 计算机网络

黑马程序员:网络编程之TCP传输

2014-08-19 00:56 295 查看

TCP传输

Socket和ServerSocket
建立客户端和服务端
建立连接后,通过Socket中的IO流进行数据的传输。
关闭Socket
同样客户端和服务端是两个独立运行的程序。
--------------------------------------------------------

TCP分为客户端和服务端

客户端对应的对象是Socket

服务端对应的对象是ServerSocket

-------------------------------------------------------

客户端:Socket创建对象时就可以去链接指定主机。

因为TCP是面向连接的,所以在建立客户端时,就要有服务端存在,

并连接成功,形成通路后,通过IO流进行数据传输。

-----------------------------------------------------------
步骤

1.创建Socket服务,并指定要链接的主机和端口。

2.获取socket流中的输出流,将数据写到该流中。

3.获取Socket流中的输入流,将服务端反馈的数据获取到,并打印。

4.关闭客户端

[java] view plaincopyprint?

import java.io.*; 

import java.net.*; 

class Client 


    public
static void main(String[] args)  

    { 
       
try 
        { 
           
//创建客户端的Socket服务,指定要连接服务端ip和端口 
            //通路建立后就在客户端和服务端之间建立了一条Socket流 

           
//可以通过Socket的相应方法获取IO流 
            Socket s =
new Socket("192.168.1.100",10000); 

           
//创建带缓冲技术的字符读取转换流去键盘关联 
            BufferedReader bufr =
new BufferedReader(new InputStreamReader(System.in)); 

           
//创建带缓冲技术的字符读取转换流装饰Socket输入流 
            BufferedReader bufin =
new BufferedReader(new InputStreamReader(s.getInputStream())); 

           
//创建带缓冲技术的字符输出转换流装饰Socket输出流 
            BufferedWriter bufout =
new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); 

             
            String line =
null; 
           
while ((line=bufr.readLine())!=null) 

            { 
               
if("886".equals(line)) 

                   
break;               
                bufout.write(line); 

                bufout.newLine(); 

                bufout.flush(); 

                System.out.println(bufin.readLine()); 

            } 
            s.close(); 
        } 
        catch (Exception e) 

        { 
            throw
new RuntimeException("客服端异常"); 

        } 
    } 


<span style="font-size:18px;">import java.io.*;
import java.net.*;
class Client
{
public static void main(String[] args)
{
try
{
//创建客户端的Socket服务,指定要连接服务端ip和端口
//通路建立后就在客户端和服务端之间建立了一条Socket流
//可以通过Socket的相应方法获取IO流
Socket s = new Socket("192.168.1.100",10000);
//创建带缓冲技术的字符读取转换流去键盘关联
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
//创建带缓冲技术的字符读取转换流装饰Socket输入流
BufferedReader bufin = new BufferedReader(new InputStreamReader(s.getInputStream()));
//创建带缓冲技术的字符输出转换流装饰Socket输出流
BufferedWriter bufout = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));

String line = null;
while ((line=
4000
bufr.readLine())!=null)
{
if("886".equals(line))
break;
bufout.write(line);
bufout.newLine();
bufout.flush();
System.out.println(bufin.readLine());
}
s.close();
}
catch (Exception e)
{
throw new RuntimeException("客服端异常");
}
}
}</span>


 

/*

服务端:
1.建立服务端:ServerSocket();并监听一个端口

2.通过服务端的accept方法,获取连接过来的客户端对象,没有连接有会等,这个方法是阻塞式的

3.客服端如果发过来数据,那么服务端要是用对应的客服端对象,获取该客户端的读取流读取发过来的数据。

4.关闭服务端(可选)一般服务端不需要关闭。

*/ 

<span style="font-size:18px;">/*
服务端:
1.建立服务端:ServerSocket();并监听一个端口
2.通过服务端的accept方法,获取连接过来的客户端对象,没有连接有会等,这个方法是阻塞式的
3.客服端如果发过来数据,那么服务端要是用对应的客服端对象,获取该客户端的读取流读取发过来的数据。
4.关闭服务端(可选)一般服务端不需要关闭。
*/</span>


[java]

class Server 


    public
static void main(String[] args)  

    { 
       
try 
        { 
            ServerSocket ss =
new ServerSocket(10000); 

            Socket s = ss.accept(); 

 
 
            String ip = s.getInetAddress().getHostAddress(); 

            System.out.println(ip+"......connected"); 

             
             
            BufferedWriter bufout =
new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); 

             
            BufferedReader bufin =
new BufferedReader(new InputStreamReader(s.getInputStream())); 

            String line =
null; 
         
            while ((line=bufin.readLine())!=null) 

            {    
                System.out.println(line); 

                bufout.write("服务器说:"+line.toUpperCase()); 

                bufout.newLine(); 

                bufout.flush(); 

            } 
            s.close(); 

 
 
        } 
       
catch (Exception e) 
        { 
           
throw new RuntimeException("服务端异常"); 

        } 
 
 
         
    } 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: