Android 소켓 기반 간단 한 C/S 채 팅 통신 기능
9053 단어 Androidsocket커 뮤 니 케 이 션
주요 아이디어:클 라 이언 트 에 메 시 지 를 보 내 고 배경 에 스 레 드 를 열 어 서비스 단 을 충당 하 며 메 시 지 를 받 으 면 바로 클 라 이언 트 에 게 돌려 줍 니 다.
첫 번 째 단계:Activity 를 계속 하 는 SocketClient Activity 클래스 를 만 듭 니 다.가방 은 com.pku.net 입 니 다.
레이아웃 파일 socketclient.xml 을 작성 합 니 다.코드 는 다음 과 같 습 니 다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ScrollView
android:id="@+id/scrollview3"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/chattxt2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#98F5FF" />
</ScrollView>
<EditText
android:id="@+id/chattxt"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/chatOk"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" " >
</Button>
</LinearLayout>
다음은 SocketClient Acty.Java 파일 을 작성 합 니 다.
package com.pku.net;
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 SocketClientActivity extends Activity {
SocketServerThread yaochatserver;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.socketclient);
try {
yaochatserver = new SocketServerThread();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (yaochatserver != null) {
yaochatserver.start();
}
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("127.0.0.1", 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("
", " ") + "
");
writer.flush();
}
private String ReceiveMsg(Socket socket) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
String txt = reader.readLine();
return txt;
}
}
Android Manifest.xml 파일 작성:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.pku.net"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".HttpURLActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="GetNetImage"></activity>
<activity android:name="HttpClientActivity"></activity>
<activity android:name="SocketClientActivity"></activity>
</application>
</manifest>
마지막 으로 배경 서버 의 파일 SocketServerThread.java 를 작성 합 니 다.코드 는 다음 과 같 습 니 다.
package com.pku.net;
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 SocketServerThread extends Thread {
public SocketServerThread() 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 + "
");
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 {
SocketServerThread yaochatserver = new SocketServerThread();
if (yaochatserver != null) {
yaochatserver.start();
}
} */
}
다음 그림 과 같이 실행 효과:더 많은 안 드 로 이 드 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 고 에서 말 한 것 이 여러분 의 안 드 로 이 드 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.