设为首页 加入收藏

TOP

Java TCP入门例子
2014-11-23 20:28:57 来源: 作者: 【 】 浏览:21
Tags: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();
}
}
}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java中利用synchronized关键字实.. 下一篇编程解决Linux下解压zip乱码问题

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: