[1] TCP编程的主要步骤

  客户端(client):

    1.创建Socket对象,构造方法的形参列表中需要InetAddress类对象和int型值,用来指明对方的IP地址和端口号。

    2.通过Socket对象的getOutputStream()方法返回OutputStream抽象类子类的一个对象,用来发送输出流。

    3.通过输出流的write方法输出具体的信息。

    4.关闭相应的流和Socket对象。

  服务端(server):

    1.创建ServerSocket类的对象,在构造器中指明端口号。

    2.调用ServerSocket类对象的accept()方法,返回一个Socket类的实例。

    3.通过Socket实例的getInputStream()方法获取一个输入流,用来接收来自客户端的信息。

    4.利用输入流接收数据,并处理数据。

    5.关闭相应的流、Socket对象、ServerSocket对象。

[2] Java源程序 ( 注意:在测试时先开启服务端方法server(),再开启客户端方法client() )

 package pack01;

 import java.io.*;
import java.net.*;
import org.junit.Test; public class TestNet1 { @Test //***********************客户端测试方法***********************
public void client() { Socket socket = null; //建立客户端网络套接字
OutputStream socket_os = null; //客户端输出流 try {
//1.获取本机环路地址
InetAddress inet = InetAddress.getByName("127.0.0.1"); //2.创建Socket对象
socket = new Socket(inet, 10000); //3.获取输出流
socket_os = socket.getOutputStream(); //4.客户端输出信息
socket_os.write( "客户端发送信息".getBytes() ); } catch (IOException e) {
e.printStackTrace(); } finally { try { //关闭输出流
socket_os.close();
} catch (IOException e) {
e.printStackTrace();
} try { //关闭客户端套接字
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} @Test //***********************服务端测试方法***********************
public void server() { ServerSocket serSocket = null;
Socket socket = null;
InputStream socket_is = null; try {
serSocket = new ServerSocket(10000);
socket = serSocket.accept(); //获取服务端套接字
socket_is = socket.getInputStream(); //获取输入流 byte[] b = new byte[100]; //用于接收信息的字节数组
int len;
StringBuffer sb = new StringBuffer(); while( (len = socket_is.read(b)) != -1 ) {
sb.append( new String(b,0,len) ); //将字节信息连续保存在buffer数组里
}
System.out.println("来自" + socket.getInetAddress().getHostName() + "的信息:");
System.out.println( sb ); } catch (IOException e) {
e.printStackTrace(); } finally { try { //关闭输入流
socket_is.close();
} catch (IOException e) {
e.printStackTrace();
} try { //关闭Socket对象
socket.close();
} catch (IOException e) {
e.printStackTrace();
} try { //关闭ServerSocket对象
serSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} }

注:希望与各位读者相互交流,共同学习进步。

Java分享笔记:Java网络编程--TCP程序设计的更多相关文章

  1. java基础篇---网络编程(TCP程序设计)

    TCP程序设计 在Java中使用Socket(即套接字)完成TCP程序的开发,使用此类可以方便的建立可靠地,双向的,持续的,点对点的通讯连接. 在Socket的程序开发中,服务器端使用serverSo ...

  2. Java精选笔记_网络编程

    网络编程 概述 现在的网络编程基本上都是基于请求/响应方式的,也就是一个设备发送请求数据给另外一个,然后接收另一个设备的反馈. 在网络编程中,发起连接程序,也就是发送第一次请求的程序,被称作客户端(C ...

  3. JAVA基础知识之网络编程——-TCP/IP协议,socket通信,服务器客户端通信demo

    OSI模型分层 OSI模型是指国际标准化组织(ISO)提出的开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它将网络分为七 ...

  4. 20165310 Java实验五《网络编程与安全》

    20165310 Java实验五<网络编程与安全> 任务一 题目:①编写MyBC.java实现中缀表达式转后缀表达式的功能:②编写MyDC.java实现从上面功能中获取的表达式中实现后缀表 ...

  5. JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)

    本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...

  6. Java基础教程:网络编程

    Java基础教程:网络编程 基础 Socket与ServerSocket Socket又称"套接字",网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个s ...

  7. java学习笔记15--多线程编程基础2

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...

  8. 网络编程TCP协议-聊天室

    网络编程TCP协议-聊天室(客户端与服务端的交互); <span style="font-size:18px;">1.客户端发数据到服务端.</span> ...

  9. C#网络编程TCP通信实例程序简单设计

    C#网络编程TCP通信实例程序简单设计 采用自带 TcpClient和TcpListener设计一个Tcp通信的例子 只实现了TCP通信 通信程序截图: 压力测试服务端截图: 俩个客户端链接服务端测试 ...

随机推荐

  1. Mac下抓包工具Charles4.0下载及使用

    Charles是一款运行在你自己计算机上的web代理工具,可以有效地获取http通信信息,主要用于网页的开发和调试等. 安装 以下为来自史蒂芬周的博客的Charles 4.0 Mac破解版 下载地址: ...

  2. BZOJ2535: [Noi2010]Plane 航空管制2(拓扑排序 贪心)

    题意 题目链接 Sol 非常妙的一道题. 首先不难想到拓扑排序,但是直接对原图按\(k\)从小到大拓扑排序是错的.因为当前的\(k\)大并不意味着后面的点\(k\)也大 但是在反图上按\(k\)从大到 ...

  3. Lucene 初识

    因为业务需要,虽然自己不是专门写搜索的,但是需要自己拼一些搜索条件去调用搜索的接口,而之前看的JVM crash里也涉及到了Lucene,所以大概了解一下. 参考文档: http://www.itey ...

  4. Java将科学计数法数据转为字符串

    如果Excel单元格数据类型为数值,数字太长会变成科学计数法,Java读取的时候使用如下方法可将其转为字符串 BigDecimal bd = new BigDecimal("3.000085 ...

  5. 学习JVM虚拟机原理总结

    0x00:JAVA虚拟机的前世今生 1991年,在Sun公司工作期间,詹姆斯·高斯林和一群技术人员创建了一个名为Oak的项目,旨在开发运行于虚拟机的编程语言,允许程序多平台上运行.后来,这项工作就演变 ...

  6. Android 应用开发 之通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比--转载

     在加载大量数据的时候,经常会用到异步加载,所谓异步加载,就是把耗时的工作放到子线程里执行,当数据加载完毕的时候再到主线程进行UI刷新.在数据量非常大的情况下,我们通常会使用两种技术来进行异步加载,一 ...

  7. SharePoint中遇到Timeout

    使用SharePoint时会遇到不止一种的timeout(即超时)错误. 如果遇到了timeout, 该怎么区分呢? 大致上SharePoint可以控制和影响的timeout地方如下: 1. Shar ...

  8. 【Leetcode】【Easy】Valid Parentheses

    Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...

  9. rel 属性<small>H5保留属性</small>

    源文件

  10. vue v-on:事件

    1.js代码 var box=new Vue({ el:'.box', data:{ msg:'hello' }, methods:{ /*方法放置区,函数*/ show:function(){ // ...