网络编程里面最简单的一个tcp程序,把一个文件从客户端上传到服务器端,上传成功后服务器端提示上传完成。代码不多,一个服务端和一个客户端。
  服务端代码:

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket; public class ServerDemo {
public static void main(String[] args) throws IOException {
// 创建服务端Socket对象
ServerSocket ss = new ServerSocket(1299);
// 监听客户端tcp连接
Socket s = ss.accept();
//定义输入流以读取客户端上传文件
InputStream is = s.getInputStream();
//创建文件字节流输出对象,将读入的字节流写入文件
FileOutputStream fos = new FileOutputStream("F:\\UUcall.exe");
byte[] bys = new byte[1024];
int length = 0;
while ((length = is.read(bys)) != -1) {
fos.write(bys, 0, length);
}
//禁用套接字输入流
s.shutdownInput();
//创建套接字输出流,向客户端发送消息
OutputStream os = s.getOutputStream();
//提示客户端文件上传成功
os.write("Upload successfully.".getBytes());
fos.close();
s.close();
}
}

  客户端代码:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket; public class ClientDemo {
public static void main(String[] args) throws IOException{
//创建客户端Socket对象,并指定服务器地址及端口号
Socket s = new Socket("127.0.0.1",1299);
//调用getOutputStream()方法产生输出流对象
OutputStream os = s.getOutputStream();
//创建本地文件字节流对象,模拟文件上传操作
FileInputStream fis = new FileInputStream(new File("D:\\UUcall.exe"));
//定义字节数组,每读取2048字节写一次
byte[] bys = new byte[2048];
//记录每次实际读取长度
int length = 0;
while ((length = fis.read(bys))!=-1) {
os.write(bys,0,length);
}
//禁用Socket对象的输出流
s.shutdownOutput();
//获取Socket对象的输入流以读取服务器回送消息
InputStream is = s.getInputStream();
byte[] msg = new byte[1024];
int len = is.read(msg);
String string = new String(msg,0,len);
System.out.println(string);
//关闭文件字节流对象
fis.close();
//关闭此套接字对象
s.close();
}
}

最简单的TCP程序的更多相关文章

  1. 实验一:基于Winsock完成简单的网络程序开发

    第一部分:简答的UDP网络通信程序 // UDP5555.cpp : Defines the entry point for the application. //================== ...

  2. Windows socket之最简单的socket程序

    原文:Windows socket之最简单的socket程序 最简单的服务器的socket程序流程如下(面向连接的TCP连接 ): 1. WSAStartup(); 初始化网络库的使用. 2. soc ...

  3. C#socket编程之实现一个简单的TCP通信

    TCP(TransmissionControl Protocol)传输控制协议. 是一种可靠的.面向连接的协议(eg:打电话).传输效率低全双工通信(发送缓存&接收缓存).面向字节流.使用TC ...

  4. Python之路(第三十一篇) 网络编程:简单的tcp套接字通信、粘包现象

    一.简单的tcp套接字通信 套接字通信的一般流程 服务端 server = socket() #创建服务器套接字 server.bind() #把地址绑定到套接字,网络地址加端口 server.lis ...

  5. (原创)如何使用boost.asio写一个简单的通信程序(一)

    boost.asio相信很多人听说过,作为一个跨平台的通信库,它的性能是很出色的,然而它却谈不上好用,里面有很多地方稍不注意就会出错,要正确的用好asio还是需要花一番精力去学习和实践的,本文将通过介 ...

  6. 使用Ajax long polling实现简单的聊天程序

    关于web实时通信,通常使用长轮询或这长连接方式进行实现. 为了能够实际体会长轮询,通过Ajax长轮询实现了一个简单的聊天程序,在此作为笔记. 长轮询 传统的轮询方式是,客户端定时(一般使用setIn ...

  7. Beetle简单构建TCP服务

    使用Beetle构建TCP服务应用是件非常简单的事情,它并不需要你去关注Socket细节,如果你想用Socket编写高性能的TCP服务,那你要关注的东西非常多,异步数据处理,大量连接下的线程管理和连接 ...

  8. Node.js实战14:一个简单的TCP服务器。

    本文,将会展示如何用Nodejs内置的net模块开发一个TCP服务器,同时模拟一个客户端,并实现客户端和服务端交互. net模块是nodejs内置的基础网络模块,通过使用net,可以创建一个简单的tc ...

  9. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

随机推荐

  1. (转)<![CDATA[]]>和转义字符

    被<![CDATA[]]>这个标记所包含的内容将表示为纯文本,比如<![CDATA[<]]>表示文本内容“<”. 此标记用于xml文档中,我们先来看看使用转义符的情 ...

  2. Zorka监控平台的Online reconfiguration基本效果展示

    在上一篇日志中,我简介了Zorka的Online reconfiguration的用法,可是没怎么介绍如何看到在线更改的效果,这里简单说说. 还是以之前的tomcat为例,我们在文件夹zorka\sc ...

  3. Java 7之传统I/O - 字符类 StringReader和StringWriter

    转自:https://www.xuebuyuan.com/2015312.html 这两个类将String类适配到了Reader和Writer接口,在StringWriter类实现的过程中,真正使用的 ...

  4. oracle 11g dbms_workload_repository手工管理AWR快照,基线

    1.修改快照设置[sql] view plain copysys@ORCL> select * from dba_hist_wr_control; DBID SNAP_INTERVAL RETE ...

  5. JavaScript学习记录二

    title: JavaScript学习记录二 toc: true date: 2018-09-13 10:14:53 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...

  6. mysql导入数据,涉及到时间转换,乱码问题解决

    表结构: drop table if exists `qi_an_log`;CREATE TABLE `qian_log` (`dt` LONG NOT NULL COMMENT '产生日期,格式yy ...

  7. CentOS 安装 PHP7

    下载地址:http://php.net/downloads.php 上传目录:/usr/local/src 安装目录:/usr/local/php ## 参考资料 PHP官网: http://php. ...

  8. 使用python绘制词云

    最近在忙考试的事情,没什么时间敲代码,一个月也没几天看代码,最近看到可视化的词云,看到网上也很多这样的工具, 但是都不怎么完美,有些不支持中文,有的中文词频统计得莫名其妙.有的不支持自定义形状.所有的 ...

  9. 路飞学城Python-Day2

    13.变量的定义规范 变量的含义:变量就是定义之后还能发生改变,可以重新赋值的量;变量的定义规范:名字不能随便起,声明一个变量,name = "123"[变量 = 值]变量定义规则 ...

  10. Java正则类

    ava.util.regex 类 Pattern java.lang.Object 继承者 java.util.regex.Pattern 所有已实现的接口: Serializable public ...