您的位置:首页 > 理论基础 > 计算机网络

黑马程序员_java基础TCP数据传输

2015-04-19 22:58 375 查看
------ <a href="http://www.itheima.com" target="blank">Windows Phone 7手机开发</a>、<a href="http://www.itheima.com" target="blank">.Net培训</a>、期待与您交流! -------

/*
1 客户端对应的是Socket
服务端对应的是ServerSocket.
步骤:
1, 创建Socket服务,并指定要连接的主机和端口。
2, 给服务端发送文本数据

*/
import java.io.*;
import java.net.*;
class TcpClient
{
public static void main(String[] args) throws Exception
{
Socket s = new Socket("192.168.1.254",10003);
//为了发送数据,应该获取socket流中的输出流。
OutputStream out = s.getOutputStream();
out.write("tcp ge men lai le".getBytes());
s.close();
}
}

class
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
class
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}

/*
服务端
1, 建立服务端的socket服务。ServerSocket();
并监听一个端口。
2, 获取连接过来的客户端对象。通过ServerSokcet的accept方法。没有链接就等。
3, 客户端如果发过来数据,那么服务端要使用对应的客户端对象,并获取到该客户端对象的读取流来读取发过来的数据。
4, 关闭服务端。(可选)
*/

class TcpServer
{
public static void main(String[] args) throws Exception
{
//建立服务端socket服务。并监听一个端口。
ServerSocket ss = new ServerSocket(10003);
//通过accept方法获取连接过来的客户端对象。
Socket s = ss.accept();

string ip = s.getInetAddress().getHostAddress();
System.out.println(ip+".....connected");

//获取客户端发送过来的数据,那么要使用客户端对象的读取流来读取数据。
InputStream in = s.getInputStream();

byte[] buf = new byte[1024];
int len = in.read(buf);

System.out.println(new String(buf,0,len));

s.close();//关闭客户端

}
}

/*
1 客户端对应的是Socket
服务端对应的是ServerSocket.
步骤:
1, 创建Socket服务,并指定要连接的主机和端口。
2, 给服务端发送文本数据

*/
import java.io.*;
import java.net.*;
class TcpClient
{
public static void main(String[] args) throws Exception
{
Socket s = new Socket("192.168.1.254",10003);
//为了发送数据,应该获取socket流中的输出流。
OutputStream out = s.getOutputStream();
out.write("tcp ge men lai le".getBytes());
s.close();
}
}

class
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
class
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}

/*
服务端
1, 建立服务端的socket服务。ServerSocket();
并监听一个端口。
2, 获取连接过来的客户端对象。通过ServerSokcet的accept方法。没有链接就等。
3, 客户端如果发过来数据,那么服务端要使用对应的客户端对象,并获取到该客户端对象的读取流来读取发过来的数据。
4, 关闭服务端。(可选)
*/

class TcpServer
{
public static void main(String[] args) throws Exception
{
//建立服务端socket服务。并监听一个端口。
ServerSocket ss = new ServerSocket(10003);
//通过accept方法获取连接过来的客户端对象。
Socket s = ss.accept();

string ip = s.getInetAddress().getHostAddress();
System.out.println(ip+".....connected");

//获取客户端发送过来的数据,那么要使用客户端对象的读取流来读取数据。
InputStream in = s.getInputStream();

byte[] buf = new byte[1024];
int len = in.read(buf);

System.out.println(new String(buf,0,len));

s.close();//关闭客户端

}
}

/*
需求:建立一个文本服务器。
客户端给服务端发送文本,服务端会将文本转成大写再返回给客户端。
而且客户端可以不断的进行文本转换。当客户端输入over时,转换结束。
分析:
客户端:既然是操作设备上的数据,那么就可以使用io技术,并按照io的操作规律。
源:键盘录入。
目的:网络设备,网络输出流。
而且操作的是文本数据。可以选择字符流。
步骤
1 建立服务
2 获取键盘录入
3 将数据发给服务端
4 后去服务端返回的大写数据
5 结束,关资源。

*/

import java.io.*;
import java.net.*;

class TransClient
{
public static void main(String[] args) throws Exception
{
Socket s = new Socket("192.168.1.254",10005);

BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
//定义目的,将数据写入到socket输出流。发给服务端。

BufferedWriter bufOut = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));

//定义一个socket读取流,读取服务端返回的大写信息。
BufferedReader bufIn =
new BufferedReader(new InputStreamReader(s.getInputStream()));
String line = null;

while((line= bufr.readLine())!=null)
{

if("over".equals(line))
break;
bufOut.write(line);
bufOut.newLine();
//bufOut.write(line+"\r\n");
bufOut.flush();

String str = bufIn.readLine();
System.out.println("server:"+str);

}
}
}
/*
服务端:
源:socket读取流
目的:socket输出流

*/
class TransServer
{
public static void main(String[] args) throws Exception
{
ServerSocket ss = new ServerSocket(10005);
Socket s =ss.accept();
//读取socket读取流中的数据。
BufferedReader bufIn =
new BufferedReader(new InputStreamReader(s.getInputStream()));
//目的。socket输出流。将大写数据写入到socket输出流,并发送给客户端。
BufferedWriter bufOut =
new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));

String line = null;
while((line=bufIn.readLine())!=null)
{
bufOut.write(line.toUpperCase());
}
s.close();
ss.close();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: