socket 编写一个简单的聊天软件,求思路! 好久没逛CSDN了,最近为了考试,忙的晕头转向的,终于又重见天日啦!嘎嘎,先发下牢骚,进入主题。RT,想做一个简单的C/S模式的聊天工具,类似于QQ似得,不要求功能多么强大,只要实现基本的通信就ok了。各位大侠,给指点思路,客户端、服务器端 要实现那些东东? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 本例实现功能如下:Server端开启服务Client端发起链接请求,并向Server端发送数据Server端响应请求,并在Server显示,向Client端返回数据Client端接收Server的数据并显示本例效果如下:终端1:终端2:Server端:本例源代码如下:Server端:package com.android.Yao;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 YaoChatServer extends Thread {private YaoChatServer() throws IOException { CreateSocket(); //创建Socket服务器}public void run() { Socket client; String txt; try { while (true) //线程无限循环,实时监听socket端口 { client=ResponseSocket(); //响应客户端链接请求。。 while(true) { txt=ReceiveMsg(client); System.out.println(txt); //链接获得客户端发来消息,并将其显示在Server端的屏幕上 SendMsg(client,txt); //向客户端返回消息 if(true)break; //中断,继续等待链接请求 } CloseSocket(client); //关闭此次链接 } } catch (IOException e) { System.out.println(e); }}private ServerSocket server = null;private static final int PORT = 5000;private BufferedWriter writer;private BufferedReader reader;private void CreateSocket() throws IOException{ server = new ServerSocket(PORT, 100); System.out.println("Server starting.."); }private Socket ResponseSocket() throws IOException{ Socket client = server.accept(); System.out.println("client connected.."); return client;}private void CloseSocket(Socket socket) throws IOException{ reader.close(); writer.close(); socket.close(); System.out.println("client closed..");}private void SendMsg(Socket socket,String Msg) throws IOException { writer = new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())); writer.write(Msg+"\n"); writer.flush(); }private String ReceiveMsg(Socket socket) throws IOException{ reader = new BufferedReader( new InputStreamReader(socket.getInputStream())); System.out.println("server get input from client socket.."); String txt="Sever send:"+reader.readLine(); return txt;}public static void main(final String args[]) throws IOException { YaoChatServer yaochatserver = new YaoChatServer(); if (yaochatserver != null) { yaochatserver.start(); }}}Client端:package com.android.Yao;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.net.UnknownHostException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.Socket;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.*;public class YaoChatRoomAndroid extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.chatroom); findviews(); setonclick(); } private EditText chattxt; private TextView chattxt2; private Button chatok; public void findviews() { chattxt = (EditText)this.findViewById(R.id.chattxt); chattxt2 = (TextView)this.findViewById(R.id.chattxt2); chatok = (Button)this.findViewById(R.id.chatOk); } private void setonclick() { chatok.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { connecttoserver(chattxt.getText().toString()); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); } public void connecttoserver(String socketData) throws UnknownHostException, IOException{ Socket socket=RequestSocket("192.168.0.107",5000); SendMsg(socket,socketData); String txt = ReceiveMsg(socket); this.chattxt2.setText(txt); } private Socket RequestSocket(String host,int port) throws UnknownHostException, IOException { Socket socket = new Socket(host, port); return socket; } private void SendMsg(Socket socket,String msg) throws IOException { BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); writer.write(msg.replace("\n", " ")+"\n"); writer.flush(); } private String ReceiveMsg(Socket socket) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); String txt=reader.readLine(); return txt; } } android 如何开发一个阅读器。 请问一个关于R.layout.main的问题 分享一些android学习资料 android自动签名问题!!!! ANDROID里到底怎么用M3G(JSR184)啊? 基于Android的移动英语学习功能的实现,谢谢啦 Log怎么输出行号? 如何在自定义的一个view中加一个button!! 关于Android键盘事件 移动网络下 ht.call(SOAP_ACTION, envelope) 报错 怎么让2个Activity的执行显示的内容在一个页面上显示 请问怎样更改toast文字内容而不重新触发它?
Client端发起链接请求,并向Server端发送数据
Server端响应请求,并在Server显示,向Client端返回数据
Client端接收Server的数据并显示本例效果如下:终端1:终端2:Server端:本例源代码如下:Server端:package com.android.Yao;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 YaoChatServer extends Thread {private YaoChatServer() throws IOException {
CreateSocket();
//创建Socket服务器
}public void run() {
Socket client;
String txt;
try {
while (true)
//线程无限循环,实时监听socket端口
{
client=ResponseSocket();
//响应客户端链接请求。。
while(true)
{
txt=ReceiveMsg(client);
System.out.println(txt);
//链接获得客户端发来消息,并将其显示在Server端的屏幕上
SendMsg(client,txt);
//向客户端返回消息 if(true)break;
//中断,继续等待链接请求
}
CloseSocket(client);
//关闭此次链接
}
}
catch (IOException e) {
System.out.println(e);
}}private ServerSocket server = null;
private static final int PORT = 5000;
private BufferedWriter writer;
private BufferedReader reader;private void CreateSocket() throws IOException
{
server = new ServerSocket(PORT, 100);
System.out.println("Server starting..");
}private Socket ResponseSocket() throws IOException
{
Socket client = server.accept();
System.out.println("client connected..");
return client;
}private void CloseSocket(Socket socket) throws IOException
{
reader.close();
writer.close();
socket.close();
System.out.println("client closed..");
}private void SendMsg(Socket socket,String Msg) throws IOException
{
writer = new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream()));
writer.write(Msg+"\n");
writer.flush();
}private String ReceiveMsg(Socket socket) throws IOException
{
reader = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
System.out.println("server get input from client socket..");
String txt="Sever send:"+reader.readLine();
return txt;
}public static void main(final String args[]) throws IOException {
YaoChatServer yaochatserver = new YaoChatServer();
if (yaochatserver != null) {
yaochatserver.start();
}
}}Client端:package com.android.Yao;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.net.UnknownHostException;import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.*;
public class YaoChatRoomAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.chatroom);
findviews();
setonclick(); } private EditText chattxt;
private TextView chattxt2;
private Button chatok;
public void findviews()
{
chattxt = (EditText)this.findViewById(R.id.chattxt);
chattxt2 = (TextView)this.findViewById(R.id.chattxt2);
chatok = (Button)this.findViewById(R.id.chatOk);
}
private void setonclick()
{
chatok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
connecttoserver(chattxt.getText().toString());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
public void connecttoserver(String socketData) throws UnknownHostException, IOException
{
Socket socket=RequestSocket("192.168.0.107",5000);
SendMsg(socket,socketData);
String txt = ReceiveMsg(socket);
this.chattxt2.setText(txt);
}
private Socket RequestSocket(String host,int port) throws UnknownHostException, IOException
{
Socket socket = new Socket(host, port);
return socket;
}
private void SendMsg(Socket socket,String msg) throws IOException
{
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
writer.write(msg.replace("\n", " ")+"\n");
writer.flush();
}
private String ReceiveMsg(Socket socket) throws IOException
{
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String txt=reader.readLine();
return txt; }
}