Socket 编程
来源:互联网 发布:知乎 周广甫 编辑:程序博客网 时间:2024/06/09 19:41
现在写两个服务器监听程序:
public class ServerActivity extends Activity {
private Button btnTcpServer;
private Button btnUdpcpServer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_server);
//tcp服务器监听程序
btnTcpServer=(Button)findViewById(R.id.btn_tcp_server);
btnTcpServer.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("启动TCP监听线程");
new TcpServerThread().start();
}
});
//Udp服务器监听程序
btnUdpcpServer=(Button)findViewById(R.id.btn_udp_server);
btnUdpcpServer.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("启动UDP监听线程");
new UdpServerThread().start();
}
});
}
class UdpServerThread extends Thread{
@Override
public void run() {
try {
//创建爱你一个DatagramSocket对象,并指定监听的端口号
DatagramSocket socket =new DatagramSocket(4567);
byte data[] =new byte[1024];
//创建一个空的Datagram对象
DatagramPacket packet =new DatagramPacket(data,data.length);
socket.receive(packet);
String result =new String(packet.getData(),packet.getOffset(),packet.getLength());
System.out.println(result);
} catch (IOException e) {
e.printStackTrace();
}
finally{
}
}
}
class TcpServerThread extends Thread{
@Override
public void run() {
ServerSocket serverSocket =null;
try {
serverSocket=new ServerSocket(4567);
Socket socket =serverSocket.accept();
InputStream inputStream=socket.getInputStream();
byte buffer [] =new byte[1024*4];
int tmp=0;
while((tmp=inputStream.read(buffer))!=-1)
{
System.out.println(new String(buffer,0,tmp));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
try {
serverSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//下面是分别两种发送消息的方式
TCP:
public class TcpClient {
/**
* @param args
*/
public static void main(String[] args) {
try {
Socket socket =new Socket("172.0.0.1",4567);
InputStream inputStream =new FileInputStream("D://Android Development Enviorment/workspace/TestClient/file/text.txt");
OutputStream outputStream=(OutputStream) socket.getOutputStream();
byte buffer[] =new byte[4*1024];
int tmp=0;
while((tmp=inputStream.read(buffer))!=-1)
{
outputStream.write(buffer,0,tmp);
}
outputStream.flush();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
UDP:
public class UdpClient {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
try {
// 首先创建爱你一个DatagramSocket 对象
DatagramSocket socket =new DatagramSocket(4567);
// 创建一个InetAddress
InetAddress serverAddress = InetAddress.getByName("172.0.0.1");
String str="hello";
byte data[] =str.getBytes();
DatagramPacket packet =new DatagramPacket(data,data.length,serverAddress,4567);
socket.send(packet);
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
- socket编程--socket基本概念
- socket编程--socket基本概念
- socket编程
- socket编程
- Socket 编程
- socket编程
- Socket编程
- Socket编程
- Socket编程
- Socket编程
- SOCKET编程
- socket编程
- Socket编程
- socket编程
- Socket 编程
- Socket 编程
- socket 编程
- socket编程
- linux编译x86和arm平台的x264
- OpenOffice菜单乱码解决和linux下安装字体
- 黑马程序员 — 线程
- MyEclipse + Maven开发Web工程的详细配置过程
- linux下图片批处理改名
- Socket 编程
- android 源码编译后, 烧机方法
- 静态数据成员和静态成员函数
- 基于jquery框架的jTemplates模板引擎的使用
- spring-mvc的urlpatten映射策略
- setTimeout原理
- 静态内部类和非静态内部类的区别
- javascript对象的继承
- Selenium webdriver介绍