网络编程 简易聊天室
来源:互联网 发布:程序员的思维修炼 编辑:程序博客网 时间:2024/05/04 16:30
问题背景:
多数程序猿使用scoket关键字有什么用途。
什么是网络编程?
通过使用套接字来达到进程间通信目的的编程就是网络编程,网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的!中间最主要的就是数据包的组装,数据包的过滤,数据包的捕获,数据包的分析,当然最后再做一些处理!
案例
使用socket,制作一个简单的聊天室
客户端
public class TestClient3 {
public static void main(String[] args) {
try {
// 客户端
InetAddress address = InetAddress.getLocalHost();
Socket socket=new Socket(address,8888); //其中8888,是端口号
BufferedReader input= new BufferedReader(new InputStreamReader(System.in));
OutputStream out=socket.getOutputStream();//获得socket输出流
DataOutputStream dout=new DataOutputStream(out);//转换成数据流
DataInputStream in=new DataInputStream(socket.getInputStream());
System.out.println("客户端==>服务器 $");
String reqStr=input.readLine();
while(!"bye".equals(reqStr)){
dout.writeUTF(reqStr);
System.out.println("服务器相应的数据是 >"+in.readUTF());
reqStr=input.readLine();
}
dout.flush();
dout.close();
in.close();
socket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
服务端
public class TestServer3 {
public static void main(String[] args) {
//提供对外的接口
ServerSocket server=null;
try {
//服务器,接受处理请求
server= new ServerSocket(8888);
System.out.println("服务器启动成功。。。。。");
while(true){
Socket client=server.accept();// 等待客户端请求
InetAddress reqAddress=client.getInetAddress();
System.out.println(reqAddress+"#"+client.getPort()+"连接到了");
BufferedReader input=new BufferedReader(new InputStreamReader(System.in));//接收控制台的数据
DataInputStream din=new DataInputStream(client.getInputStream());//接受客户端写出的数据
DataOutputStream out=new DataOutputStream(client.getOutputStream());
String reqData=din.readUTF();
while(!"bye".equals(reqData)){
System.out.println(reqAddress.toString().substring(1)+"#"+client.getPort()+reqData);
System.out.println("服务器==>客户端$");
String reqStr=input.readLine();
out.writeUTF(reqStr);
reqData=din.readUTF();
}
out.flush();
din.close();
client.close();
out.close();
}
} catch (IOException e) {
e.printStackTrace();
try {
server.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
这样,简单的聊天室就做好了。
- 网络编程 简易聊天室
- 使用Android网络编程实现简易聊天室
- 使用Android网络编程实现简易聊天室
- 使用Android网络编程实现简易聊天室
- 使用Android网络编程实现简易聊天室
- 使用Android网络编程实现简易聊天室
- 网络编程初探--使用UDP协议的简易聊天室
- Socket编程实现简易聊天室
- 简易网络聊天室设计过程质量管理方案
- 多线程编程基础及简易聊天室
- Java WebSocket编程与网页简易聊天室
- 网络编程TCP协议-聊天室
- 多线程+网络编程实现聊天室
- 网络编程项目(聊天室项目)
- 简易聊天室
- 基于TCP网络通信的简易多线程GUI聊天室
- Android网络通信篇:Socket TCP(简易聊天室)
- 网络通信之简易聊天室(UDP实现)
- 鼎科面试
- QBImagePicker用法详解
- Java并发编程(二)
- css图片的查找方式和c#程序查找方式不一致
- 部署与管理ZooKeeper(转)
- 网络编程 简易聊天室
- 【小白爱编程】之编译也崩盘
- Codeforces--633D--Fibonacci-ish(map+去重)(twice)
- Java序列化之Rebis存储序列化
- (多线程)Threa
- ZooKeeper典型应用场景(转)
- 蛇形矩阵
- 解决label上的文本字符串显示不同的字体和颜色(看我就够了)
- Java之美[从菜鸟到高手演变]之设计模式