Java TCP入门例子

TCP套接字

Java为TCP协议提供了两个类:Socket类和ServerSocket类。一个Socket实例代表了TCP连接的一端。一个TCP连接是一条抽象的双向信道,两端分别由IP地址和端口号确定。

TCP客户端

典型的TCP客户端要经过下面三步:

1.创建一个Scoket实例:构造函数向指定的远程主机和端口建立一个TCP连接。

2.通过套接字的输入输出流(I/O
streams)进行通信:一个Scoket连接实例包括一个InputStream和一个OutputStream,它们的用法同于其他Java输入输出流。

3.使用Scoket类的close()方法关闭连接。

TCP服务器端

1.创建一个ServerSocket实例,并指定本地端口。此逃接字的功能是侦听该指定端口收到的连接。

2.重复执行:

a.调用ServerSocket的accept()方法以获取下一个客户端连接,基于新建立的客户端连接,创建一个Socket实例,并由accept()方法返回。

b.使用所返回的Socket实例的InputStream和OutputStream与客户端进行通信。

c.通信完成后,使用Socket类的Close()方法关闭该客户端套接字连接。

原理图:

下面程序示例:

TcpServer.java

package com.iboxpay.tcp;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TcpServer {
	public static void main(String[] args) throws IOException {
		BufferedReader buffer = null;
		ServerSocket server= null;
		Socket s = null;
		InputStream is = null;
		OutputStream os  = null;
		DataOutputStream dos = null;
		try {
			server = new ServerSocket(8080);
			s = server.accept();
			is = s.getInputStream();
			os = s.getOutputStream();

			System.out.println("-----------welcome to tcp socket-------");
			buffer = new BufferedReader(new InputStreamReader(is));

			dos = new DataOutputStream(os);

			System.out.println(buffer.readLine());//输出
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			buffer.close();
			os.close();
			is.close();
			s.close();
			server.close();
		}
	}
}

TcpClient.java

package com.iboxpay.tcp;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;

public class TcpClient{
	public static void main(String[] args) {
		 String[] str = {"172.30.5.58","8080"};
		 try {
			client(str);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	public static void client(String[] str) throws IOException{
		Socket s = null;
		InputStream ips = null;
		OutputStream ops = null;
		BufferedReader brKey  = null;
		DataOutputStream dos = null;
		BufferedReader brNet  = null;
		try
		{
			//Socket s=new Socket(InetAddress.getByName("192.168.0.213"),8001);
			if(str.length < 2)
			{
				System.out.println("Usage:java TcpClient ServerIP ServerPort");
				return;
			}
			//建立Socket
			s =new Socket(InetAddress.getByName(str[0]),Integer.parseInt(str[1]));
			ips =s.getInputStream();
			ops =s.getOutputStream();  

			dos = new DataOutputStream(ops);
			brNet = new BufferedReader(new InputStreamReader(ips));  

			while(true)
			{
				brKey = new BufferedReader(new InputStreamReader(System.in));//键盘输入
				String strWord = brKey.readLine();
				dos.writeBytes(strWord + System.getProperty("line.separator"));
				if(strWord.equalsIgnoreCase("quit"))
					break;
			}
		}catch(Exception e){
			e.printStackTrace();
		} finally{
			dos.close();
			brNet.close();
			brKey.close();
			s.close();
		}
	}
}
时间: 2024-12-14 17:51:03

Java TCP入门例子的相关文章

MINA经典入门例子----Time Server

原文地址 http://blog.sina.com.cn/s/blog_720bdf0501010b8r.html 貌似java的IO.NIO的入门例子都有相关的Time Server Demo.本例为MINA官方Demo翻译过来而已. MINA百科: Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架.当前发行的 MI

java新手入门

java新手入门 Java总有它的千般好处使你选择它,但这些随便翻翻书或在网上逛一圈就能找到答案.在本文中,笔者把自己学习Java的一些切身体会和过程写出来,供Java培训初学者做个参考. 我在学习Java的过程中主要围绕以下几个方面来学习: 1.时刻提醒自己Java是一种OOP语言工具,而不仅仅是编码,只有这样才能总体把握和运用Java. 2.在学习的过程中,最好能够了解Java的底层机制,而不是仅仅停留在表层,不是抄书上的例子运行出结果就可以.要注意,即便对一个简单的例子也要有耐心去琢磨.调

JPA入门例子

(1).JPA介绍: JPA全称为Java PersistenceAPI ,Java耐久化API是Sun公司在Java EE 5标准中提出的Java耐久化接口.JPA吸取了当前Java耐久化技能的长处,旨在标准.简化Java目标的耐久化作业.运用JPA耐久化目标,并不是依赖于某一个ORM结构.      为何要运用JAP?      在说为何要运用JPA之前,咱们有必要了解为何要运用ORM技能. ORM 是Object-Relation-Mapping,即目标联系暗射技能,是目标耐久化的中心.O

freemarker入门例子

freemarker入门例子,直接代码如下: FreeMarkerTest import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.util.ArrayList; import java.util.HashMap; import java.util.List; impor

spring mvc构建WEB应用程序入门例子

在使用spring mvc 构建web应用程序之前,需要了解spring mvc 的请求过程是怎样的,然后记录下如何搭建一个超简单的spring mvc例子. 1) spring mvc的请求经历 请求由DispatcherServlet分配给控制器(根据处理器映射),在控制器完成处理后,请求会被发送到一个视图(根据viewController解析逻辑视图) 来呈现输出结果. 整理成下图所示: 2)搭建一个简单的spring mvc例子 ①创建一个maven工程,其中pom中要有spring相关

Java新手入门的30个基本概念

Java新手入门的30个基本概念 在我们学习Java的过程中,掌握其中的基本概念对我们的学习无论是J2SE,J2EE,J2ME都是很重要的,J2SE是Java的基础,所以有必要对其中的基本概念做以归纳,以便大家在以后的学习过程中更好的理解java的精髓,在此我总结了30条基本的概念. Java概述: 目前Java主要应用于中间件的开发(middleware)---处理客户机于服务器之间的通信技术,早期的实践证明,Java不适合pc应用程序的开发,其发展逐渐变成在开发手持设备,互联网信息站,及车载

一个简单的iBatis入门例子

一个简单的iBatis入门例子,用ORACLE和Java测试 目录结构: 1.导入iBatis和oracle驱动. 2.创建类Person.java package com.ibeats;import java.util.Date; public class Person { private int id; private String firstName; private String lastName; private double weightInKilograms; private do

Spring @AspectJ 实现AOP 入门例子(转)

AOP的作用这里就不再作说明了,下面开始讲解一个很简单的入门级例子. 引用一个猴子偷桃,守护者守护果园抓住猴子的小情节. 1.猴子偷桃类(普通类): Java代码   package com.samter.common; /** * 猴子 * @author Administrator * */ public class Monkey { public void stealPeaches(String name){ System.out.println("[猴子]"+name+&quo

《JAVA 从入门到精通》 - 正式走向JAVA项目开发的路

以前很多时候会开玩笑,说什么,三天学会PHP,七天精通Nodejs,xx天学会xx ... 一般来说,这样子说的多半都带有一点讽刺的意味,我也基本上从不相信什么快速入门.我以前在学校的时候自觉过很多门语言,但基本都只是了解了一个大概,入门肯定也算不上了.顶多也就能吹吹牛,说几个大的概念而已. 公司最近转型,决定抛弃PHP了,我们的出路是:要么H5,要么JAVA,要么走人.纠结了一段时间后,决定还是转JAVA了. 当一个人在自己熟悉的领域的时候,好像说什么都很有自信,都觉得自己是对的.那时候我们的