TCP简单程序

服务器段:

package com.dcz.socket;

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

public class TcpServer {

	public static void main(String[] args) {

		String data = "你好啊,socket 世界!";

		// 端口
		int port = 17001;
		ServerSocket serverSocket = null;

		try {
			serverSocket = new ServerSocket(port);
			System.out.println("服务端已经准备就绪......");

			boolean isAccept = true;
			while (isAccept) {

				Socket client = serverSocket.accept();
				InetAddress inetAddress = client.getInetAddress();
				System.out.println("客户端ip:" + inetAddress);

				OutputStream clientOutputStream = client.getOutputStream();
				clientOutputStream.write(data.getBytes());
				clientOutputStream.close();
			}
			serverSocket.close();

		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

  

客户端代码:

package com.dcz.socket;

import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
import java.net.UnknownHostException;

import org.apache.commons.io.output.ByteArrayOutputStream;

public class TcpClient {

	public static void main(String[] args) {

		String address = "127.0.0.1";
		int port = 17001;
		Socket client = null;
		try {
			client =  new Socket(address, port);
			InputStream serverInputStream = client.getInputStream();

			 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

			byte[] buffer = new byte[1024];
			while((serverInputStream.read(buffer, 0, buffer.length)) != -1){
				byteArrayOutputStream.write(buffer, 0, buffer.length);
			}

			byte[] data = byteArrayOutputStream.toByteArray();

			System.out.println(new String(data, "utf-8"));

			byteArrayOutputStream.close();
			client.close();

		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}

  

时间: 2024-10-12 20:22:47

TCP简单程序的相关文章

Java 通过实现简单的TCP通信程序来理解TCP通信

概述 TCP通信能实现两台计算机之间的数据交互,通信的两端,要严格区分为客户端(Client)与服务端(Server). 两端通信的步骤 服务端程序,需要事先启动,等待客户端的连接. 客户端主动连接服务器端,连接成功才能通信.服务端不可以主动连接客户端. 在Java中,提供了两个类用于实现TCP通信程序: 客户端:java.net.Socket类表示.创建Socket对象,向服务端发出连接请求,服务端响应请求,两者建立连接开始通信. 服务端:java.net.ServerSocket类表示.创建

在向服务器发送请求时发生传输级错误。 (provider: TCP 提供程序, error: 0 -

作为总公司IT部门,自然承担着各个分公司的运维技术支持工作,由于公司的性质,分公司经常负责维护这各家官老爷的服务器,同时这些服务器也作为和官老爷数据之间的连接......此处省略一万字. 今天分公司就有个负责人发过来一段服务器的报错信息,大致如下" FireF|y゛ 2016/5/23 15:36:19日志名称:          Application来源:            XXXXX 日期:            2016/5/23 11:47:30事件 ID:         0任务

linux网络编程 基于TCP的程序开发

面向连接的TCP程序设计 基于TCP的程序开发分为服务器端和客户端两部分,常见的核心步骤和流程: 其实按照上面这个流程调用系统API确实可以完全实现应用层程序的开发,一点问题没有.可随着时间的推移,你会觉得这样子的开发毫无激情.为什么TCP的开发就要按照这样的流程来呢?而且一般出的问题几乎都不在这几个系统调用上,原因何在?当我们弄清网络开发的本质,协议栈的设计原理.数据流向等这些问题的答案也就会慢慢浮出水面了.接下来这几篇博文主要是围绕网络编程展开,目的是引出后面对于Linux下TCP/IP协议

Windows Socket编程示例-TCP示例程序

前面一部分是介绍,后面有示例 1.网络中进程之间如何通信? 首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的.其实TCP/IP协议族已经帮我们解决了这个问题,网络层的"ip地址"可以唯一标识网络中的主机,而传输层的"协议+端口"可以唯一标识主机中的应用程序(进程).这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互. 使用TCP

TCP应用程序通信协议的处理

TCP应用程序通信协议的处理 flyfish 2015-6-29 一 流式处理 TCP是一种流协议(stream protocol).TCP数据是以字节流的形式传递给接收者的,没有固有的"报文"或"报文边界"或者用户可见的"分组"的概念. 它只是传送了一个字节流,我们无法准确地预测在一个特定的读操作中会返回多少字节.尽管网络层数据在节点之间是以IP分组的形式传输的,但分组中的数据量与send调用中传送给TCP多少数据并没有直接关系.而且,接收程序

Java变量&&简单程序流程&&循环

变量:强类型局部变量: 1.先赋值,后使用 2.作用范围:从定义开始,到所在代码块结束 3.重合范围内不允许重复命名 数据类型(8中基本类型) byte 1B -128~127 short 2B -32768~32767 int 4B long 8B l或L float 4B f 或F double 8B d或D 不加 boolean 1B true false char 2B 'A'对象类型 String "hehe"强制转换 int a=(int)12.5; 自动类型提升 a b

SqlServer2005 provider: TCP 提供程序, error: 0 - 由于目标计算机积极拒绝,无法连接。) (Microsoft SQL Server,错误: 10061)问题解决

环境:win7 32位 数据库:sqlserver2005 报错过程: 按照sqlserver2005默认流程一步步安装的,以前启动一直正常, 今天启动本机安装的sqlserver2005,点击""登陆,时,报错:错误信息如下: 标题: 连接到服务器 ------------------------------ 无法连接到 XGL. ------------------------------ 其他信息: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到

1.1GTK+ 的简单程序HelloWorld

1.1GTK+ 的简单程序HelloWorld 编译运行如图所示:

一个使用指针的简单程序

/*一个使用指针的简单程序*/ #include <stdio.h> void main(){ int number = 0; //一个出初始化为0的整形变量 int *pointer = NULL; //一个可以指向int类型的指针 number = 10; printf("\nnumber的地址为:%p",&number); //输出地址 printf("\nnumber的值为:%d\n\n",number); //输出值 pointer =