下面的demo的目的是通过代码来快速的了解tcp编程的步骤

1首先呢,对InetAddress类简单了解其作用

public static void main(String[] args) throws Exception {
InetAddress inet=InetAddress.getByName("www.baidu.com");
System.out.println(inet);//百度地址
System.out.println(inet.getHostName());//ip地址对应的域名
System.out.println(inet.getHostAddress());//获取IP地址
InetAddress inet1=InetAddress.getLocalHost();//本地地址
System.out.println(inet1);//获取本机的地址ip

}

下面的demo的目的是:客户端给服务端发送消息,然后服务端打印到控制台上

package com.henu.liulei;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;

import org.junit.Test;

public class TestTcp1 {
public static void main(String[] args) {

}
@Test
public void client() {
Socket socket=null;
OutputStream os=null;
try {
socket=new Socket(InetAddress.getByName("127.0.0.1"),9090);
os=socket.getOutputStream();
os.write("我是客户端".getBytes());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {

try {
if(os!=null) {
os.close();
}
if(socket!=null) {
socket.close();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
@Test
public void server() {
try {
ServerSocket socket=new ServerSocket(9090);
Socket socket1=socket.accept();
InputStream is=socket1.getInputStream();
byte[]b=new byte[20];
int len;
while((len=is.read(b))!=-1) {
String str=new String(b,0,len);
System.out.println(str);
}
is.close();
socket1.close();
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}

下面的demo的目的是客户端给服务端发送消息,然后服务端打印到控制台上,同时给客户端反馈消息

package com.henu.liulei;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;

import org.junit.Test;

public class TestTcp2 {

@Test
public void client() {
Socket socket=null;
OutputStream os=null;
try {
socket=new Socket(InetAddress.getByName("127.0.0.1"),9090);
os=socket.getOutputStream();
os.write("我是客户端".getBytes());
socket.shutdownOutput();//执行此方法告诉服务端表示已经发送完了
InputStream is=socket.getInputStream();
byte[]b=new byte[20];
int len;
while((len=is.read(b))!=-1) {
String str=new String(b,0,len);
System.out.println(str);
}
is.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {

try {
if(os!=null) {
os.close();
}
if(socket!=null) {
socket.close();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
@Test
public void server() {
try {
ServerSocket socket=new ServerSocket(9090);
Socket socket1=socket.accept();
InputStream is=socket1.getInputStream();
byte[]b=new byte[20];
int len;
while((len=is.read(b))!=-1) {
String str=new String(b,0,len);
System.out.println(str);
}
OutputStream os=socket1.getOutputStream();
os.write("收到".getBytes());
os.close();
is.close();
socket1.close();
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}

最后一个demo的目的是从客户端发送给服务端,服务端接受并保存在本地,然后发消息给客户端表示接收到

package com.henu.liulei;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;

import org.junit.Test;

public class TestTcp3 {
@Test
public void client()
{
try {
//1:创建socket对象,
Socket socket=new Socket(InetAddress.getByName("127.0.0.1"),9090);
socket.setSoTimeout(10000);
//从本地获取一个文件,发送给服务端
OutputStream os=socket.getOutputStream();
FileInputStream fis=new FileInputStream(new File("C:/aaaaa.jpg"));
byte []b=new byte[1024];
int len;
while((len=fis.read(b))!=-1) {
os.write(b,0,len);
}
socket.shutdownOutput();
//接受来自服务端的信息
InputStream is= socket.getInputStream();
byte []b1=new byte[1024];
int len1;
while((len1 = is.read(b1))!=-1)
{
String str=new String(b1,0 , len1);
System.out.println(str);
}
//关闭相应的流
is.close();
fis.close();
os.close();
socket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
@Test
public void server()
{
try {
//1创建一个serversocket对象
ServerSocket ss=new ServerSocket(9090);
//2:调用accept方法,返回一个socket对象
while(true) {
Socket s=ss.accept();
//把接受到的信息保存在本地
InputStream is=s.getInputStream();
FileOutputStream fos=new FileOutputStream(new File("C:/bbbbb.jpg"));
byte []b=new byte[1024];
int len ;
while((len=is.read(b))!=-1) {
fos.write(b, 0, len);
}
//发送“接收成功”的消息反馈给客户端
OutputStream os=s.getOutputStream();
os.write("你发送成功,已经接受".getBytes());
//关闭流
os.close();
fos.close();
is.close();
s.close();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

Tcp编程demo之三部曲的更多相关文章

  1. Java TCP编程

    Java编写TCP编程--回射信息实例 注:简单的tcp联系,还存在问题,readUTF()为阻塞型,如果之前的用户一直不输入,则一直阻塞,之后的用户再连接会出现问题. import java.io. ...

  2. [C# 网络编程系列]专题五:TCP编程

    转自:http://www.cnblogs.com/zhili/archive/2012/08/25/2656840.html 前言 前面专题的例子都是基于应用层上的HTTP协议的介绍, 现在本专题来 ...

  3. python中的TCP编程学习

    今天看了一下关于python的TCP编程. 发现思路和其他语言(比如java)思路基本上差点儿相同. 先看client.基本过程例如以下: 第一步:创建一个socket 第二步:建立连接 第三步:发送 ...

  4. C#网络程序设计(3)网络传输编程之TCP编程

        网络传输编程指基于各种网络协议进行编程,包括TCP编程,UDP编程,P2P编程.本节介绍TCP编程.     (1)TCP简介: TCP是TCP/IP体系中最重要的传输层协议,它提供全双工和可 ...

  5. 【Socket编程】通过Socket实现TCP编程

    通过Socket实现TCP编程 Socket通信 : 1.TCP协议是面向对象连接.可靠的.有序的,以字节流的方式发送数据. 2.基于TCP协议实现网络通信的类: 客户端----Socket类 服务器 ...

  6. JAVA 通过 Socket 实现 TCP 编程

    简介 TCP简介 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义.在简化的计算机 ...

  7. 网络编程之TCP编程

    网络编程之TCP编程 前面已经介绍过关于TCP协议的东西,这里不做赘述.Java对于基于TCP协议的网络通信提供了良好的封装,Java使用socket对象来代表两端的通信窗口,并通过Socket产生I ...

  8. 在做关于NIO TCP编程小案例时遇到无法监听write的问题,没想到只是我的if语句的位置放错了位置,哎,看了半天没看出来

    在做关于NIO TCP编程小案例时遇到无法监听write的问题,没想到只是我的if语句的位置放错了位置,哎,看了半天没看出来 贴下课堂笔记: 在Java中使用NIO进行网络TCP套接字编程主要以下几个 ...

  9. 五十四、linux 编程——TCP 编程模型

    54.1 编程模型介绍 54.1.1 TCP 客户端服务器编程模型 客户端调用序列 调用 socket 函数创建套接字 调用 connect 连接服务器端 调用 I/O 函数(read/write) ...

随机推荐

  1. 近年来世界各地ICO的花式骗局盘点

    很多人说区块链是骗局,其实不然,区块链是一种安全的互联网技术,可以解决当下很多行业的痛点,但也确实存在一些不法分子利用区块链进行行骗,下面整理了世界各地的一些ICO骗局,一起来看看吧. 案例一:越南I ...

  2. CodeIgniter底层数据库类继承关系

    1.CI_DB_mysql_driver 继承 CI_DB,  CI_DB这个类是不存在的,每次调用文件中~/CodeIgniter_2.1.3/system/database/DB.php函数&am ...

  3. 有关svg的一些理解

    SVG 是使用XML来描述二维图形和绘图程序的语言. SVG指可伸缩的矢量图形(Scalable Vector Graphics) SVG使用XML格式定义图形 SVG图形在放大或改变尺寸的情况下,图 ...

  4. JS的事件流概念*******

    事件的概念 HTML中与javascript交互是通过事件驱动来实现的,例如鼠标点击事件.页面的滚动事件onscroll等等,可以向文档或者文档中的元素添加事件侦听器来预订事件. 事件流 事件流描述的 ...

  5. Java多线程系列 基础篇04 线程中断

    1. 中断线程 中断可以理解为线程的一个标志位属性,它表示一个运行中的线程是否被其他线程进行了中断操作,其他线程通过调用该线程的interrupt()方法对其进行中断操作,线程通过检查自身是否被中断来 ...

  6. Android Weekly Notes Issue #317

    July 8th, 2018 Android Weekly Issue #317 本期主要内容包括"重磅"的Udacity放弃RN(其实是因为他们RN写的那个Feature不要了) ...

  7. gcc error - "iostream: No such file or directory"

    #include <iostream> using namespace std; int main(void) { cout<<"Hello World!\n&quo ...

  8. matlab的数组

    1.定义:同一类型的元素的集合. 2.生成:用[]创建,元素之间用逗号或者空格隔开. 第一例: >>a=[1,2,3,4] a = 1 2 3 4 注意,取矩阵的某几列,是这样a(:,2: ...

  9. 在CI框架中的配置整合amfphp

    之前做的项目用到CI框架和amfphp的整合,主要用于php与flex的交互,在此做一下记录: 一. 安装CI框架: 1.  搭建PHP运行环境,本人在WIN7下用WAMP作测试,安装目录:d:/wa ...

  10. smack api 转载未测试

    ===============================================================主动发送信息给某个用户-------------------------- ...