大家好,这是我的第一个原创教程,下面我们来学习下最基本的SOCKET是怎样在两台电脑上实现数据交换的。
首先是我们的java端:
然后是我们的客户端(新建一个单视图的工程,需要导入GCDAsyncSoket.h/.m文件和添加相应框架)
controller源代码:
首先是我们的java端:
package com.hcios.socket;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class HCNewServer {
/**
* 1.创建服务器端Socket
*
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("欢迎来到Socket的世界");
ServerSocket serverSocket=null;
try {
serverSocket=new ServerSocket(5678);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// input = new InputStreamReader(System.in);
// bufw = new BufferedReader(input);
// try {
// String str =bufw.readLine();
// bufw2=new BufferedWriter(os);
// os.print(str);
// // System.out.print("Show: " + line);
// bufw2.flush();
// InputStreamReader input=new InputStreamReader(System.in);
// BufferedReader br=new BufferedReader(input);
//
int i=0;
while (true)
{
Socket thisClient=null;
try {
System.out.print("等待客户端连接");
//接受方法会阻塞主进程
thisClient= serverSocket.accept();
System.out.println("有客户端请求socket。同意");
while (!thisClient.isClosed()){
//读取socket的输入流
InputStream is=thisClient.getInputStream();
InputStreamReader clientInput=new InputStreamReader(is);
BufferedReader br=new BufferedReader(clientInput);
System.out.println("当前socket客户端的IP地址:"+thisClient.getInetAddress());
String clientStr= br.readLine();
System.out.println("客户端说:"+clientStr);
if (clientStr.equals("goodbye")) {
thisClient.close();
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 读取Input流过程也会阻塞主进程
i++;
}
}
}
然后是我们的客户端(新建一个单视图的工程,需要导入GCDAsyncSoket.h/.m文件和添加相应框架)
controller源代码:
<script src="https://code.csdn.net/snippets/765.js" type="text/javascript"></script>