1、客户端

  1.1:创建服务端点

  1.2:获取已有数据

  1.3:通过socket输出流将数据发送给服务端

  1.4:读取服务端反馈信息

  1.5:关闭socket

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException; public class TCPClient
{ static Socket socket;
public static void main(String[] args)
{
BufferedReader br = null;
BufferedInputStream bi = null;
BufferedOutputStream bo = null;
try
{
socket = new Socket("10.9.194.71", 8638);
bi = new BufferedInputStream(socket.getInputStream());
bo = new BufferedOutputStream(socket.getOutputStream()); br = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while ((line = br.readLine()) != null)
{
bo.write(line.getBytes());
bo.flush();
if (line.equals("quit"))
{
bi.close();
bo.close();
br.close();
socket.close();
break;
}
byte[] buf = new byte[1024];
int len = bi.read(buf); System.out.println(new String(buf, 0, len));
} } catch (UnknownHostException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
if (bi != null)
bi.close();
if (br != null)
br.close();
if (bo != null)
bo.close();
if (socket != null)
socket.close();
} catch (IOException e)
{ e.printStackTrace();
}
}
} }

2、服务器

import java.io.IOException;
import java.net.ServerSocket; public class TCPServer
{
static int acount = 0; public static void main(String[] args)
{ try
{
ServerSocket serverSocket = new ServerSocket(8638);
while (true)
new Thread(new MultiClient(serverSocket.accept(), ++acount))
.start();
} catch (IOException e)
{
e.printStackTrace();
}
}
} import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.Date; public class MultiClient implements Runnable
{ private Socket client;
private int acount;
private BufferedInputStream bi = null;
private BufferedOutputStream bo = null; public MultiClient(Socket client, int acount)
{ this.client = client;
this.acount = acount;
} @Override
public void run()
{
try
{
Date start = new Date(); String recordStart = start + " :: "
+ client.getInetAddress().getHostAddress() + " :: 第"
+ acount + "用户成功连接";
System.out.println(recordStart);
WriteLog.writeLog(recordStart);
bi = new BufferedInputStream(client.getInputStream());
BufferedOutputStream bo = new BufferedOutputStream(
client.getOutputStream()); while (true)
{
byte[] buf = new byte[1024];
int len = bi.read(buf);
String info = new String(buf, 0, len);
System.out.println(info);
bo.write(("Has Receive:" + info).getBytes());
bo.flush();
if (info.equals("quit"))
break;
}
Date end = new Date(); String recordEnd = end + " :: "
+ client.getInetAddress().getHostAddress() + " :: 第"
+ acount + "用户退出连接";
System.out.println(recordEnd);
WriteLog.writeLog(recordEnd); } catch (Exception e)
{
e.printStackTrace();
} finally
{
try
{
if (bi != null)
bi.close();
if (bo != null)
bo.close();
if (client != null)
client.close();
} catch (IOException e)
{ e.printStackTrace();
}
}
}
} import java.io.File;
import java.io.FileWriter; public class WriteLog
{
public static void writeLog(String str)
{
File logFile = new File("server-log.txt");
try
{
FileWriter out = new FileWriter(logFile, true);
out.append(str + '\n');
out.close();
} catch (Exception e)
{
e.printStackTrace();
}
}
}

Java网络编程——TCP实例的更多相关文章

  1. java 网络编程-tcp/udp

    --转自:http://blog.csdn.net/nyzhl/article/details/1705039 直接把代码写在这里,解释看这里吧:http://blog.csdn.net/nyzhl/ ...

  2. java网络编程(TCP详解)

    网络编程详解-TCP 一,TCP协议的特点              面向连接的协议(有发送端就一定要有接收端)    通过三次连接握手建立连接 通过四次握手断开连接 基于IO流传输数据 传输数据大小 ...

  3. java网络编程TCP传输—流操作—拿到源后的写入动作

    在网络编程中的TCP传输里,拿到Socket的源后,应该怎么进行读写操作呢,下面我列举了两种方法,希望大家帮忙补充···· 1.利用byte数组作为一个缓冲区进行读写 客户端上传 //获取socket ...

  4. Java分享笔记:Java网络编程--TCP程序设计

    [1] TCP编程的主要步骤 客户端(client): 1.创建Socket对象,构造方法的形参列表中需要InetAddress类对象和int型值,用来指明对方的IP地址和端口号. 2.通过Socke ...

  5. JAVA网络编程TCP通信

    Socket简介: Socket称为"套接字",描述IP地址和端口.在Internet上的主机一般运行多个服务软件,同时提供几种服务,每种服务都打开一个Socket,并绑定在一个端 ...

  6. Java网络编程(TCP客户端)

    TCP传输:两个端点建立连接后会有一个传输数据的通道,这个通道就称为流,而且是建立在网络基础上的流,之为socket流,该流中既可以读取也可以写入. TCP的两个端点:一个客户端:ServerSock ...

  7. java网络编程—TCP(1)

    演示tcp的传输的客户端和服务端的互访. 需求:客户端给服务端发送数据,服务端收到后,给客户端反馈信息. 客户端: 1,建立socket服务.指定要连接主机和端口. 2,获取socket流中的输出流. ...

  8. Java网络编程(TCP服务端)

    /* * TCP服务端: * 1.创建服务端socket服务,并监听一个端口 * 2.服务端为了给客户端提供服务,获取客户端的内容,可以通过accept方法获取连接过来的客户端对象 * 3.可以通过获 ...

  9. JAVA网络编程-----TCP沟通

    java采纳TCP变速箱使用Socket和ServerSocket数据传输. 采纳tcp步模式数据传输: 1.设定client和服务器 ,分别对应Socket和ServerSocket 2.建立连接后 ...

随机推荐

  1. broadcom移植到openwrt总结

    评估及移植BCM5862x及BCM5301x到openwrt平台下: 一.首先得分清楚几个基本概念: 1.文件系统  文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固 ...

  2. Fragment中添加ListView而不使用ListFragment

    最初的构想是,将Fragment和ViewPager结合起来, 然后突发奇想,在第一个Fragment里添加了ListView, 依照网上的建议,extends了ListFragment,接着各种报错 ...

  3. 使用中国版 Office 365 -- Team Site分享

    Team Site(工作组网站)主要用于团队内部的协同工作,团队(组织机构)内部每个需要使用Team Site的用户都需要一个Office 365的license.但是如果我们需要将Team Site ...

  4. [转]C#网络编程(订立协议和发送文件) - Part.4

    本文转自:http://www.tracefact.net/CSharp-Programming/Network-Programming-Part4.aspx 源码下载:http://www.trac ...

  5. openjudge1768 最大子矩阵[二维前缀和or递推|DP]

    总时间限制:  1000ms 内存限制:  65536kB 描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵. 比如,如下4 * 4的 ...

  6. Android爬坑之旅:软键盘挡住输入框问题的终极解决方案

    前言 开发做得久了,总免不了会遇到各种坑.而在Android开发的路上,『软键盘挡住了输入框』这个坑,可谓是一个旷日持久的巨坑--来来来,我们慢慢看. 入门篇 Base 最基本的情况,如图所示:在页面 ...

  7. sg函数与博弈论2

    参考链接: http://blog.sina.com.cn/s/blog_51cea4040100h3l9.html 这篇主要就是讲anti-sg.multi-sg和every-sg的. 例1 poj ...

  8. js双层动画幻灯

    js双层动画幻灯 点击下载

  9. centos6下安装dedecms

    几经波折,终于安装成功!!! 一.centos6下安装WDCP 1.连接linux 在百度直接搜索下载xshell,通过ssh连接 2.安装wdcp 下载安装wget http://dl.wdlinu ...

  10. saltstack安装配置(halite)

    saltstack官方提供了一个简单的web UI--halite.但是给出的安装配置方法实在没法实现,在网上找了几篇博客,见文章末尾的参考链接,可以用起来了.但是功能有点简单.这篇文章记录安装配置h ...