基于TCP/IP的网络编程(java语言编程)

接上一篇基于TCP/IP的网络编程(C++语言编程)

service:

package tcp;

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

import java.util.Scanner;
public class TcpService {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		System.out.println("服务器运行!");
//		创建连接端口
		ServerSocket serverSockert=new ServerSocket(1111);
		Socket accept = serverSockert.accept();
		try {
			while(true) {
//				获取与客户端的连接
				String ip=accept.getInetAddress().getHostAddress();
				System.out.println("ip:"+ip);
				InputStream inputStream = accept.getInputStream();
				byte[] buf=new byte[1024];
				int len =inputStream.read(buf);
				String str=new String(buf,0,len);
				System.out.println(str);
//				回复给客户端信息
					OutputStream outPutStream=accept.getOutputStream();
					Scanner scanner=new Scanner(System.in);
					System.out.println("向客户端发送信息:");
					if(scanner.hasNext()) {
					String strNext=scanner.next();
					outPutStream.write(strNext.getBytes());
					}
			}
		} finally {
			// TODO: handle finally clause
//			关闭连接
			accept.close();
			serverSockert.close();
		}


   }

}

client:

package tcp;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class TcpClient {

	public static void main(String[] args) throws UnknownHostException, IOException {
		// TODO Auto-generated method stub
		System.out.println("客户端运行!");
//		连接服务端的ip和端口
		Socket socket=new Socket("192.168.138.1",1111);
		OutputStream outPutStream=socket.getOutputStream();
		Scanner scanner=new Scanner(System.in);
		try {
			while (true) {
//				获得socket中的io流
					System.out.println("向服务端发送信息:");
					if(scanner.hasNext()) {
					String strNext=scanner.next();
					outPutStream.write(strNext.getBytes());
					}
//				    io流中只能传输字节
//					收到服务器端回复的内容
					InputStream inputStream=socket.getInputStream();
					byte[] buf=new byte[1024];
					int len =inputStream.read(buf);
										String str=new String(buf,0,len);
					System.out.println("服务器回复内容:"+str);
			}
		} finally {
			// TODO: handle finally clause
			//关闭连接
			socket.close();
		}

		
	}

}

inputStream.read:

1 、read () 方法:

这个方法 从输入流中读取数据的下一个字节。

2 、read (byte[] b,int off,int len) 方法:

    byte[] b:将需要的值传入到b里面保存;

                int off: offset,偏移量;

                int len: 读取的长度,<=len;
3 、 read (byte[] b) 方法:

将输入流中的一定量的字节读取到b中,这里面的一定量指的是你对b的定义大小;

 

java.util.Scanner:是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。

        Scanner.next():读取连续一行,中间不能有空格,否则空格之后的不能被读取

                 Scanner.nextLine():读取一行包括空格以及空格之后的数据

猜你喜欢

转载自blog.csdn.net/qq_37909508/article/details/84169718