免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1349 | 回复: 0
打印 上一主题 下一主题

最简单的TCP程序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-06-01 09:37 |只看该作者 |倒序浏览
网络编程里面最简单的一个tcp程序,把一个文件从客户端上传到服务器端,上传成功后服务器端提示上传完成。代码不多,一个服务端和一个客户端。
  服务端代码:
  1. import java.io.FileOutputStream;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.io.OutputStream;
  5. import java.net.ServerSocket;
  6. import java.net.Socket;

  7. public class ServerDemo {
  8.     public static void main(String[] args) throws IOException {
  9.         // 创建服务端Socket对象
  10.         ServerSocket ss = new ServerSocket(1299);
  11.         // 监听客户端tcp连接
  12.         Socket s = ss.accept();
  13.         //定义输入流以读取客户端上传文件
  14.         InputStream is = s.getInputStream();
  15.         //创建文件字节流输出对象,将读入的字节流写入文件
  16.         FileOutputStream fos = new FileOutputStream("F:\\UUcall.exe");
  17.         byte[] bys = new byte[1024];
  18.         int length = 0;
  19.         while ((length = is.read(bys)) != -1) {
  20.             fos.write(bys, 0, length);
  21.         }
  22.         //禁用套接字输入流
  23.         s.shutdownInput();
  24.         //创建套接字输出流,向客户端发送消息
  25.         OutputStream os = s.getOutputStream();
  26.         //提示客户端文件上传成功
  27.         os.write("Upload successfully.".getBytes());
  28.         fos.close();
  29.         s.close();
  30.     }
  31. }
复制代码
客户端代码:
  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.OutputStream;
  6. import java.net.Socket;

  7. public class ClientDemo {
  8.     public static void main(String[] args) throws IOException{
  9.         //创建客户端Socket对象,并指定服务器地址及端口号
  10.         Socket s = new Socket("127.0.0.1",1299);
  11.         //调用getOutputStream()方法产生输出流对象
  12.         OutputStream os = s.getOutputStream();
  13.         //创建本地文件字节流对象,模拟文件上传操作
  14.         FileInputStream fis = new FileInputStream(new File("D:\\UUcall.exe"));
  15.         //定义字节数组,每读取2048字节写一次
  16.         byte[] bys = new byte[2048];
  17.         //记录每次实际读取长度
  18.         int length = 0;
  19.         while ((length = fis.read(bys))!=-1) {
  20.             os.write(bys,0,length);
  21.         }
  22.         //禁用Socket对象的输出流
  23.         s.shutdownOutput();
  24.         //获取Socket对象的输入流以读取服务器回送消息
  25.         InputStream is = s.getInputStream();
  26.         byte[] msg = new byte[1024];
  27.         int len = is.read(msg);
  28.         String string = new String(msg,0,len);
  29.         System.out.println(string);
  30.         //关闭文件字节流对象
  31.         fis.close();
  32.         //关闭此套接字对象
  33.         s.close();
  34.     }
  35. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP