java tcp简单例子

来源:互联网 发布:java字符数组赋值 编辑:程序博客网 时间:2024/06/06 13:23

服务器端

package com.justsee.tcpip;import java.io.BufferedReader;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 {ServerSocket serverSocket=new ServerSocket(8080);Socket socket=serverSocket.accept();//阻塞等待消息InputStream inputStream=socket.getInputStream();OutputStream outputStream=socket.getOutputStream();//outputStream.write("欢迎光临!".getBytes(), 0,"欢迎光临!".getBytes().length );outputStream.write("welcome!".getBytes() );/*byte[] buf=new byte[1024];int len=inputStream.read(buf);//System.out.println(new String(buf, 0, len));inputStream.close();*/BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));        System.out.println(bufferedReader.readLine());        bufferedReader.close();outputStream.close();socket.close();serverSocket.close();}}

 客户端(还可以开多个telnet来模拟)

package com.justsee.tcpip;import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.InetAddress;import java.net.Socket;//后启动客户端程序public class TcpClient {//启动main时传进来两个参数:ip和端口号public static void main(String [] args) {try{//Socket s=new Socket(InetAddress.getByName("192.168.0.213"),8001);if(args.length < 2){System.out.println("Usage:java TcpClient ServerIP ServerPort");return;}//建立SocketSocket s=new Socket(InetAddress.getByName(args[0]),Integer.parseInt(args[1]));InputStream ips=s.getInputStream();OutputStream ops=s.getOutputStream();BufferedReader brKey = new BufferedReader(new InputStreamReader(System.in));//键盘输入DataOutputStream dos = new DataOutputStream(ops);BufferedReader brNet = new BufferedReader(new InputStreamReader(ips));while(true){String strWord = brKey.readLine();dos.writeBytes(strWord + System.getProperty("line.separator"));if(strWord.equalsIgnoreCase("quit"))break;elseSystem.out.println(brNet.readLine());}dos.close();brNet.close();brKey.close();s.close();}catch(Exception e){e.printStackTrace();}}}/*发送和接受都是以Socket为信息载体*/

 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------

服务器端

package com.justsee.tcpip;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 Servicer implements Runnable {Socket socket;public Servicer(Socket socket) {super();this.socket = socket;}@Overridepublic void run() {try {InputStream inputStream=socket.getInputStream();OutputStream outputStream=socket.getOutputStream();BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));DataOutputStream dataOutputStream=new DataOutputStream(outputStream);while (true) {String strWord=bufferedReader.readLine();//System.out.println(strWord+":"+strWord.length());if ("quit".equalsIgnoreCase(strWord)) {break;}String strEcho=(new StringBuilder(strWord).reverse()).toString();//dataOutputStream.writeBytes(strWord+"---->"+strEcho+"\r\n");//System.getProperty("line.separator")为跨平台换行符。Window为\r\n,unix为\ndataOutputStream.writeBytes(strWord+"---->"+strEcho+System.getProperty("line.separator"));}bufferedReader.close();bufferedReader.close();socket.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void main(String [] args){try{ServerSocket ss=new ServerSocket(8080);while(true){Socket s=ss.accept();new Thread(new Servicer(s)).start();}//ss.close();}catch(Exception e){e.printStackTrace();}}}

 

 

 

 

原创粉丝点击