俩段看上去很简单代码深刻理解到了太多的东西:
先发代码!!:
服务器端:
package com.iotek.tcpsocket;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPServer {
public static void main(String[] args) throws IOException {
//创建一个ServerSocket
ServerSocket serverSocket=new ServerSocket(8888);
//调用accept方法来接收客户端的请求
Socket socket=serverSocket.accept();
System.out.println(socket.getInetAddress().getHostAddress()+" has connected");
//获取socket对象的输入输出流
BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
String line=null;
//读取客户端传过来的数据
while((line=br.readLine())!=null){
if(line.equals("over")){
break;
}
System.out.println(line);
bw.write(line.toUpperCase());//把转化成大写的东西传给客户端
bw.newLine();
bw.flush();
}
bw.close();
br.close();
socket.close();
System.out.println(socket.getInetAddress().getHostAddress()+" has disconnected");
}
}
客户端:
package com.iotek.tcpsocket;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
public class TCPClient {
public static void main(String[] args) throws IOException {
Socket socket=new Socket("10.5.0.59", 8888);
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
BufferedReader reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
while(true){
String line=br.readLine();//获取键盘所输入的字符串
bw.write(line);
bw.newLine();//换行
bw.flush();
if(line.equals("over")){
break;
}
System.out.println(reader.readLine());//获取服务区传来的大写
}
reader.close();
br.close();
bw.close();
socket.close();
}
}
通过这俩端简单的代码,我终理解到了服务端和客户端之间的紧密联系了!就是java socket网络编程的神奇所在,我在一台电脑上的服务端定义了一个端口,在另一台电脑上的客户端添加了服务端电脑的IP地址和那个端口,然后通过俩个eclipse各自运行代码,然后就产生了连接,并且简单的能把我输入的小写字母转换成大写字母在发回客户端。
那么不难想到,任何软件和游戏以及各种进行网络交互的模式(QQ以及微信)都是由这个简单的逻辑所孕育而生的,如果在服务器端口连接一个数据库,然后用函数进行数据库中进行数据的处理,处理完毕后后在发送到客户端,就是所谓的人机交互,但是人机交互的难点就是数学了。。。666666666666今天收获很多,回寝室!