TCP套接字编程 java原生

Server与Client示例.
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;

import org.w3c.dom.*; 

import javax.xml.parsers.*; 
public class TcpClient {
	public static void main(String[] args) {
		try {
			// 下句执行后就已建立连接,它就是TCP ,我也不知道哪里指定的。
			Socket socket;
			 socket = new Socket(InetAddress.getByName("172.16.140.1"),
						4567);
			System.out.println("已与Server连接上");
			InputStream socketInputStream = socket.getInputStream();
			OutputStream socketOutputStream = socket.getOutputStream();
			DataInputStream socketReader =new DataInputStream(socketInputStream);
			DataOutputStream socketWriter = new DataOutputStream(socketOutputStream);
			int cycleCount=0,bufferSize=3000;
			byte[] bytes=new byte[bufferSize];
			while (cycleCount<20) {
				//先写后读
				socketWriter.write("hello!".getBytes("utf-8"));
				socketReader.read(bytes);
				String str=new String(bytes,"utf-8");
				System.out.println("Server received:\t"+str);
				cycleCount++;
				Thread.sleep(2000);
				if(cycleCount>20) break;
			}
			socketInputStream.close();
			socketOutputStream.close();
			socketReader.close();
			socketWriter.close();
			socket.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
/*已与Server连接上
Server received:	welcome!
Server received:	welcome!
*/
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TCPServer {
	public static void main(String[] args) throws IOException, InterruptedException {
	    //listening socket
		ServerSocket serverSocket = new ServerSocket(4567);
		System.out.println("server 已启动");
		//注意,下行得到的communication socket,它的local port number与上面绑定的4567一致.这是一定的!
		Socket socket = serverSocket.accept();// 阻塞等待消息
		System.out.println("已于client连接上");
		InputStream socketInputStream = socket.getInputStream();
		OutputStream socketOutputStream = socket.getOutputStream();
		DataInputStream socketReader =new DataInputStream(socketInputStream);
		DataOutputStream socketWriter = new DataOutputStream(
				socketOutputStream);
		int cycleCount=0,bufferSize=3000;
		byte[] bytes=new byte[bufferSize];
		
		while (true) {
		//先读后写
		socketReader.read(bytes);
		String str=new String(bytes,"utf-8");
		System.out.println("Server received:\t"+str);
		socketWriter.write("welcome!".getBytes("utf-8"));
		cycleCount++;
		Thread.sleep(2000);
		if(cycleCount>20) break;
		}
		socketReader.close();
		socketOutputStream.close();
		socket.close();
		serverSocket.close();
	}
}
/*server 已启动
已于client连接上
Server received:	hello!
Server received:	hello!
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值