下面的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. 认识影片版本(CAM、TS、TC、DVD、HD、BD、TVRIP等)

    许多朋友在下载电影的时候, 往往会被各种各样的版本标识弄糊涂,今天把各种版本的缩写收集在一起,希望对大家有所帮助 . 引用: 1.CAM(枪版)    CAM 通常是用数码摄像机从电影院盗录.有时会使 ...

  2. Java for LeetCode 096 Unique Binary Search Trees

    Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...

  3. sourceSet

    android { sourceSets { main{ manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources ...

  4. Android Studio第一次启动失败的解决办法

    Android Studio Android 开发环境 由于GFW的问题,安装后第一次启动会在显示Fetching android sdk component information对话框后,提示错误 ...

  5. Tomcat实现多主多备

    Nginx Upstream 实现简单双机主从热备 下面配置多主多从: upstream testproxy { server 127.0.0.1:8080; server 127.0.0.1:808 ...

  6. awk添加文本到指定内容后一行

    一下操作会输入到文件末尾,,测试不全面,还不如使用echo解决呢... 1. 要添加的文本内容如下: 文件名:code_list html</>!@$%^^ fdsafds <> ...

  7. Ubuntu 17.4下如何安装和配置flash player

    Ubuntu Linux系统下没有自带的flash player,要自己手动安装.下面post出简单的安装过程. 首先打开终端,输入命令:sudo apt-get install flashplugi ...

  8. Java丨DBCP连接池完整配置

    <!-- 数据源1 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicData ...

  9. java中相对路径加载xml

    一.xml文件一般的存放位置有三个: 1.放在WEB-INF下: 2.xml文件放在/WEB-INF/classes目录下或classpath的jar包中: 3.放在与解析它的java类同一个包中,不 ...

  10. codeforces 569B B. Inventory(水题)

    题目链接: B. Inventory time limit per test 1 second memory limit per test 256 megabytes input standard i ...