使用socket实现简单的聊天功能

package net;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;

public class SocketTask {

	@SuppressWarnings("resource")
	public static void main(String[] args) {
		//客户端
		Socket s = null;
		try {
			s = new Socket("127.0.0.1", 10086);
			OutputStream output = s.getOutputStream();
			OutputStreamWriter osw = new OutputStreamWriter(output);
			BufferedWriter bw = new BufferedWriter(osw);

			Scanner can = new Scanner(System.in);
			String string = can.next();
			bw.write(string);
			bw.flush();
			System.out.println("发送完成........");
			s.shutdownOutput();

			InputStream input = s.getInputStream();
			InputStreamReader in = new InputStreamReader(input);
			BufferedReader br = new BufferedReader(in);
			System.out.println(br.readLine());
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			if(s != null){
				try {
					s.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}

	}

}

  

package net;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class ServerTask {
	//服务端
	public static void main(String[] args) {
		ServerSocket ss = null;
		BufferedWriter bw = null;
		Date date = new Date();
		SimpleDateFormat simp = new SimpleDateFormat("yyyy年 MM月 H点  mm分 ss秒");
		String time = simp.format(date);
		try {
			ss = new ServerSocket(10086);
			while(true){
			System.out.println("^-^ 服务端已开启 ^-^\r\n");
			Socket socket = ss.accept();//监听客户端发送的socket对象,在接收到客户端请求之前处于阻塞状态

			InputStream is = socket.getInputStream();//从socket中读取传输的内容
			InputStreamReader isr = new InputStreamReader(is);
			BufferedReader br = new BufferedReader(isr);

			File file = new File("f:\\net.txt");
			bw = new BufferedWriter(new FileWriter(file,true));

			String str = null;
			while((str = br.readLine())!= null){
				if(file.exists()){
					file.mkdirs();
					bw.write(str);
					bw.newLine();
					bw.flush();
				}
				System.out.println("来自客户端的消息 :\r\n"+str +"\r\n\t"+ time);
			}

			OutputStream output = socket.getOutputStream();
			BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output));

			@SuppressWarnings("resource")
			Scanner can = new Scanner(System.in);
			String string = can.next();
			writer.write(string);
			writer.flush();

			socket.shutdownInput();
		}
		}catch (IOException e) {
			e.printStackTrace();
		}finally{
			if(ss != null){
				try {
					ss.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

  

时间: 2024-10-09 20:34:04

使用socket实现简单的聊天功能的相关文章

简单的聊天功能

简单的聊天功能 可以查看附近的人,简单的本地聊天,简单的客户资料. 下载地址:http://www.devstore.cn/code/info/792.html 运行截图:  

java Socket实现简单在线聊天(一)

出处:http://blog.csdn.net/tuzongxun 最近的项目有一个在线网页交流的需求,由于很久以前做过的demo已经忘记的差不多了,因此便重新学习一下. 我计划的大致实现步骤分这样几大步: 1.使用awt组件和socket实现简单的单客户端向服务端持续发送消息: 2.结合线程,实现多客户端连接服务端发送消息: 3.实现服务端转发客户端消息至所有客户端,同时在客户端显示: 4.把awt组件生成的窗口界面改成前端jsp或者html展示的界面,java socket实现的客户端改为前

运用socket实现简单的ssh功能

在python socket知识点中已经对socket进行了初步的了解,那现在就使用这些知识来实现一个简单的ssh(Secure Shell)功能. 首先同样是建立两个端(服务器端和客户端) 需求是:服务器端需要对客户端发送过来的命令进行相应,并将响应内容返回给客户端. 看似很简单的需求,但是如何响应命令行?python官方建议buffer的大小不宜超过8k(8192byte),如果返回的数据大于了buffer如何让客户端接收完全?信号传输过程只能通过byte类型,而命令执行过程又需要使用到st

android中实现简单的聊天功能

这个例子只是简单的实现了单机版的聊天功能,自己跟自己聊,啦啦~~ 主要还是展示RecyclerView控件的使用吧~ 参考我之前写的文章: android中RecyclerView控件的使用 android中使用Nine-Patch图片 1.先添加一个关于聊天内容的Chat.java类: package com.example.chenrui.common; public class Chat { private String targetUser; private String content

使用socket.io实现简单的聊天功能

Socket.io实际上是WebSocket的父集,Socket.io封装了WebSocket和轮询等方法 首先得在你的项目中安装socket.io $ npm install socket.io 服务端代码: var app=require('http').createServer() var io=require('socket.io')(app) var PORT =5555; var clientCount=0; app.listen(PORT) io.on('connection',f

Python Socket实现简单的聊天室

通过参考其他牛人的文章和代码,  再根据自己的理解总结得出,  说明已经加在注释中, FYI 主要参考文章: http://blog.csdn.net/dk_zhe/article/details/37820965  http://www.cnblogs.com/coser/archive/2012/01/06/2315216.html  https://docs.python.org/2.7/library/select.html?highlight=select#module-select

Java中使用UDP实现简单的聊天功能

通过DatagramSocket类来实现.此类表示用来发送和接收数据报包的套接字. 发送端代码如下: 2 3 import java.io.IOException; 4 import java.net.*; 5 import java.util.Scanner; 6 7 public class Send implements Runnable{ 8 @Override 9 public void run() { 10 //创建一个发送消息的套接字 11 DatagramSocket sendS

使用socket实现简单聊天室

通过socket实现简单的聊天室 1.服务端代码:serverselect.py #!/usr/bin/env python #coding:utf8 import socket import select class SelectServer(object): def __init__(self,host,port,backlog): self.host = host self.prot = port self.address = (host,port) self.backlog = back

我们一起学习WCF 第九篇聊天功能

说到聊天,那么其实就是传输数据,把自己写的东西传给自己想发送的那么人.我总结一下传输有三种方式 1:就是我们常见的数据库传输 2:就是文件(流)传输 3:就是socket传输 今天我们说的wcf实现聊天其实是基于socket的聊天功能(QQ聊天发展到今天肯定是很牛的了,但是最初肯定也是这样的思想) 今天我先说说基于WCF聊天的原理 1:需要一个回调函数(当用户发送的时候会吧信息回调给客户端本身) 2:需要一个委托(把服务器传来的信息显示给前台) 3:需要一个触发点击事件(目的是为了触发把发送信息