socket编程的一个简单的hello world程序

一些理论的东西,我在这里一概不提,我们先看例子程序,关于理论的部分,我会在后续的博客中会进行详细的说明。

首先我们来看一个socket的一个简单的hello world程序,

我们首先来完成第一个需求:

(1) 让客户端和服务器端建立起连接

那么我们必须要有一个客户端程序(TCPClient),一个服务器端程序(TCPServer),我们的项目结构如下:

socket编程的一个简单的hello world程序_第1张图片

代码思想: 编写socket程序和其他程序不一样,关于我们socket程序,服务端和客户端代码需要同时编写,但是运行的时候,必须先要运行服务器端代码,然后再运行客户端代码,这是因为客户端是请求的发起者,服务器端是请求的接受者,只有接受者是活跃的状态,请求发起才具有实际的意义。

package com.niepengfei.server;

import java.net.ServerSocket;

public class TCPServer {

    public static void main(String[] args) throws Exception {
		
    	ServerSocket ss = new ServerSocket(6666);
        Socket s = ss.accept();
        System.out.println("A client connect.");
    }
		
}

package com.niepengfei.client;

import java.net.Socket;


public class TCPClent {
	
    public static void main(String[] args) throws Exception {
    	Socket s = new Socket("127.0.0.1", 6666);
    }
    
}

以上代码的含义如下:

socket编程的一个简单的hello world程序_第2张图片

我们首先运行TCPServer:

socket编程的一个简单的hello world程序_第3张图片

再运行TCPClient,(请注意控制台)

socket编程的一个简单的hello world程序_第4张图片


(2) 现在客户端和服务器端已经建立起连接了,那么现在我们让客户端向服务器端传入一段字符串。

package com.niepengfei.client;

import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.Socket;


public class TCPClent {
	
    public static void main(String[] args) throws Exception {
    	Socket s = new Socket("127.0.0.1", 6666);
    	OutputStream out = s.getOutputStream();
    	DataOutputStream dos = new DataOutputStream(out);
    	dos.writeUTF("hello server.");
    	dos.flush();
    	dos.close();
    	s.close();
    }
    
}


package com.niepengfei.server;

import java.io.DataInputStream;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TCPServer {

    public static void main(String[] args) throws Exception {
		
    	ServerSocket ss = new ServerSocket(6666);
    	while(true){
    		Socket s = ss.accept();
        	System.out.println("A client connect.");
        	InputStream input = s.getInputStream();
        	DataInputStream dai = new DataInputStream(input);
        	System.out.println(dai.readUTF());
    	}
    }
		
}

运行服务器端:

socket编程的一个简单的hello world程序_第5张图片


运行客户端(注意控制台):

socket编程的一个简单的hello world程序_第6张图片


你可能感兴趣的:(socket编程,socket)