Server Socket
来源:互联网 发布:苏州知行汽车 编辑:程序博客网 时间:2024/06/05 06:17
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;
import java.nio.channels.Pipe;
/**
* Author:kson
* E-mail:19655910@qq.com
* Time:2017/08/11
* Description:服务端
*/
public class Server {
public static void main(String args[]){
try {
//创建ServerSocket对象,绑定端口号
ServerSocket serverSocket = new ServerSocket(8999);
while (true){
Socket socket = serverSocket.accept();//阻塞方法
new MyThread(socket).start();
}
} catch (IOException e) {
e.printStackTrace();
}finally {
}
}
static class MyThread extends Thread{
private Socket mSocket;
InputStream in = null;
BufferedReader bufferReader = null;
OutputStream out = null;
public MyThread(Socket socket){
this.mSocket = socket;
}
@Override
public void run() {
try {
in = mSocket.getInputStream();
System.out.println("连接成功,客户端的ip地址是:"+mSocket.getInetAddress());
StringBuffer sb = new StringBuffer();
bufferReader = new BufferedReader(new InputStreamReader(in));
String line = null;
while ((line=bufferReader.readLine())!=null){
sb.append(line);
}
System.out.println("欢迎客户端加入:"+sb.toString());
//得到流通道里的输出流,用于给服务端发送数据
String response = "我是服务端,你好"+sb.toString();
out = mSocket.getOutputStream();
out.write(response.getBytes(),0,response.getBytes().length);
out.flush();
mSocket.shutdownOutput();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
out.close();
bufferReader.close();
in.close();
mSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
clent
package com.kson.socketdemo;
import Java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.NET.Socket;
/**
* Author:kson
* E-mail:19655910@qq.com
* Time:2017/08/11
* Description:客户端
*/
public class Client {
public static void main(String[] args) {
Socket socket = null;
InputStream in = null;
BufferedReader bufferReader = null;
OutputStream out = null;
try {
//建立客户端socket对象,绑定ip地址和端口号,和服务端建立唯一的通道
socket = new Socket("169.254.209.59", 8999);
//客户端传输的数据
String name = "kson";
//得到流通道里的输出流,用于给服务端发送数据
out = socket.getOutputStream();
out.write(name.getBytes(), 0, name.getBytes().length);
out.flush();
socket.shutdownOutput();//标示,代表我已经发送完毕了,服务端,你可以读取完整的数据了
//得到流通道里的输入流,用于接收服务器返回的数据,并逐行读取输入流数据,转换成字符串
in = socket.getInputStream();
StringBuffer sb = new StringBuffer();
bufferReader = new BufferedReader(new InputStreamReader(in));
String line = null;
while ((line = bufferReader.readLine()) != null) {
sb.append(line);
}
System.out.println("我是服务端,我已经收到你的信息:" + name);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
bufferReader.close();
in.close();
out.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Main
package com.kson.socketdemo;import Android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
public class MainActivity extends AppCompatActivity {
private EditText mNameEt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
mNameEt = (EditText) findViewById(R.id.et_name);
}
public void sendClick(View v){
final String name = mNameEt.getText().toString();
new Thread(new Runnable() {
@Override
public void run() {
sendMsg(name);
}
}).start();
}
private void sendMsg(String name) {
Socket socket = null;
InputStream in = null;
BufferedReader bufferReader = null;
OutputStream out = null;
try {
//建立客户端socket对象,绑定ip地址和端口号,和服务端建立唯一的通道
socket = new Socket("169.254.209.59", 8999);
//客户端传输的数据
// String name = "kson";
//得到流通道里的输出流,用于给服务端发送数据
out = socket.getOutputStream();
out.write(name.getBytes(), 0, name.getBytes().length);
out.flush();
socket.shutdownOutput();//标示,代表我已经发送完毕了,服务端,你可以读取完整的数据了
//得到流通道里的输入流,用于接收服务器返回的数据,并逐行读取输入流数据,转换成字符串
in = socket.getInputStream();
StringBuffer sb = new StringBuffer();
bufferReader = new BufferedReader(new InputStreamReader(in));
String line = null;
while ((line = bufferReader.readLine()) != null) {
sb.append(line);
}
System.out.println("我是服务端,我已经收到你的信息:" + name);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
bufferReader.close();
in.close();
out.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
- socket server
- server.socket
- Socket --Server
- Server/Socket
- server socket
- Server Socket
- windows socket 基本知识 server socket
- PHP socket 连接 Socket server
- Socket Server程序
- Socket Server in JavaSE
- Socket Server in JavaME
- Server socket BIO (BIO_s_accept)
- Socket连接Server端
- C# server socket 异步
- Socket Server Client Sample
- Wince Socket Server
- Socket for server(ServerSocket)
- Android server socket
- 华为手机不打印日志信息
- AJAX插件form的应用
- Hive体系架构
- -webkit-overflow-scrolling
- 线程池的参数
- Server Socket
- Mysql分页
- 深搜dfs核心代码
- Unity中几个默认函数辨析
- SGBM算法总结
- Linux的运行级别和常用命令(一)
- javaee学习日记之html
- 奇偶数排序--整数数组的奇偶数分开(小米公司笔试题)
- POJ1195 Mobile phones —— 二维树状数组(二维BIT)