Socket编程
Posted tanlei-sxs
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Socket编程相关的知识,希望对你有一定的参考价值。
Socket
概念:是连接运行在网络上的两个程序间的双向通讯的端点
C/S 客户机/服务器
B/S 浏览器/服务器
基于TCP的Socket编程
创建TCP服务端步骤
- 创建一个ServerSocket对象
- 调用accept()方法接受客户端请求
- 从Socket中获取I/O流
- 对I/O流进行读写操作,完成与客户端的交互
- 关闭I/O流和Socket
创建TCP客户步骤
- 创建一个Socket对象
- 从Socket中获取I/O流
- 对I/O流进行读写操作,完成与服务端的交互
- 关闭I/O流和Socket
package com.tanlei.Socket;
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 {
//1,创建一个ServerSocket对象
ServerSocket s1=new ServerSocket(8888);
//2.调用accept()方法接受客户端请求
Socket socket=s1.accept();
System.out.println(socket.getInetAddress()+"连接成功");
//获取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()+"断开连接");
}
}
package com.tanlei.Socket;
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 {
//1.创建一个Socket对象
Socket socket=new Socket("127.0.0.1", 8888);
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
BufferedReader br1=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(br.readLine());//获取服务端传来的大小字符串
}
br1.close();
br.close();
bw.close();
socket.close();
}
}
基于UDP的Socket编程
.........................................
以上是关于Socket编程的主要内容,如果未能解决你的问题,请参考以下文章