java用udp进行服务器通信,做聊天程序

java用udp进行服务器通信,做聊天程序,怎么将接收方的信息,放在发送内容里面来完成。tcp模式可以用序列化方式来完成,udp用什么方法,必须用正则方法,来找出接收方信息吗。

2个回答

自定义一个消息类啊,用不同的字段,表示发送方、信息内容、接收方信息。

为什么一定要用正则提取出来呢,首先定义好数据格式,在提取出来(比较简单),如果split也算正则的话,,,,

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
JAVA udp协议 服务器端无法接受数据

我用UDP协议,写了客服端和服务器端的demo,可是服务器端一直无法receive DatagramPacket。 我在防火墙和360等杀毒软件都关的情况下,任然无法解决。 服务器代码: ```public static void main(String[] args) throws IOException { // TODO Auto-generated method stub DatagramSocket ds = new DatagramSocket(10086); byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf, 1024); ds.receive(dp); byte[] data = dp.getData(); int length =dp.getLength(); String receiveddata= new String(data, 0, length); System.out.println("UdpServerDemo.main()"+receiveddata); ds.close(); } ``` 客户端代码: ``` public static void main(String[] args) throws IOException { // TODO Auto-generated method stub DatagramSocket dS = new DatagramSocket() ; String string = "你好"; byte[] buf =string.getBytes(); int length = buf.length; InetAddress address = InetAddress.getLocalHost(); int port= 10086; DatagramPacket p = new DatagramPacket(buf, length, address, port); dS.send(p); dS.close(); } } ```

关于java的UDP通信问题。。。。。。。

我建立了两个客户端和一个服务端,一个客户端发消息给服务器,然后服务器转发给另一个客户端。问题是这样的,客户端1发了一个消息1给服务器然后转发给客户端2,然后这时候要是客户端2要给客户端1发个消息2的话,客户端1却是收到刚刚发出去的消息1,客户端2再发消息的时候就正常了,消息2不知道哪里去了,调试的时候客户端2发的消息2是有传送到服务器的,可是服务器再发出去的时候就变了 ![图片说明](https://img-ask.csdn.net/upload/201711/26/1511695595_978945.png) 服务器程序: import java.net.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.*; import java.sql.*; public class UDPServerService { /** * @param args the command line arguments */ public static void main(String[] args) throws SQLException { // TODO code application logic here // if(args.length<1) // { // System.out.println("请输入用于mail服务的本地端口号"); // System.exit(0); // } int i=8000; // String s=Integer.toString(i); UDPServerThread myUDPServer=new UDPServerThread(8000);//创建邮件服务器监听线程 myUDPServer.init(); Thread th=new Thread(myUDPServer); th.start(); } } class UDPServerThread extends Frame implements Runnable { private DatagramSocket UDPServerSocket=null,UDPServerSocket1=null; PreparedStatement ps; TextArea ta=new TextArea(10,50); JButton close; Connection con; Statement stmt; ResultSet rs; String sql; int flag=0; int ports; void init(){ close=new JButton("close"); setTitle("服务监听器"); setSize(400,300); setLayout(new FlowLayout()); add("center",ta); add(close); close.addActionListener(new Close()); setVisible(true); } UDPServerThread(int Port){ ports=Port; try{ UDPServerSocket=new DatagramSocket(Port); UDPServerSocket1=new DatagramSocket(Port+1); ta.append("邮件服务监听器在端口"+UDPServerSocket.getLocalPort()+"\n"); }catch(Exception e){ System.err.println(e); } } public void run(){ if(UDPServerSocket==null) return; while(true){ try{ byte[] dataBuf=new byte[512]; DatagramPacket ServerPacket; InetAddress remoteHost; int remotePort; String datagram,s; ServerPacket =new DatagramPacket(dataBuf,512); UDPServerSocket.receive(ServerPacket);//接受 remoteHost=ServerPacket.getAddress(); remotePort=ServerPacket.getPort(); datagram=new String(ServerPacket.getData()); String sql="SELECT * FROM biao1"; try{ Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); con=DriverManager.getConnection("jdbc:ucanaccess://D:\\access\\db1.mdb","",""); stmt=con.createStatement(); rs=stmt.executeQuery(sql); }catch(Exception e1){ e1.printStackTrace(); } if(datagram.contains("#dl#")){ while(rs.next()){ //验证帐号密码是否正确 if((datagram.indexOf(rs.getString("username"))!=-1)&&(datagram.indexOf(rs.getString("password")))!=-1){ String pass="connect"; dataBuf=pass.getBytes(); ServerPacket=new DatagramPacket(dataBuf,dataBuf.length,remoteHost,remotePort); UDPServerSocket.send(ServerPacket); ta.append("用户"+remoteHost+"已登录"+'\n'); flag=1; sql="UPDATE biao1 SET connection=? WHERE username=?"; ps=con.prepareStatement(sql); ps.setInt(1,1); ps.setString(2, rs.getString("username")); ps.executeUpdate(); //表1中设置该用户为在线状态 sql="UPDATE biao1 SET remoteHost=? WHERE username=?"; ps=con.prepareStatement(sql); ps.setString(1,remoteHost.toString()); ps.setString(2, rs.getString("username")); ps.executeUpdate(); sql="UPDATE biao1 SET remotePort=? WHERE username=?"; ps=con.prepareStatement(sql); ps.setInt(1, remotePort); ps.setString(2, rs.getString("username")); ps.executeUpdate(); //修改表中用户的登录地址,登录端口 con.commit(); con.close(); } } if(flag==0){ String lost="lost"; dataBuf=lost.getBytes(); ServerPacket=new DatagramPacket(dataBuf,dataBuf.length,remoteHost,remotePort); UDPServerSocket.send(ServerPacket); } } else{ sql="SELECT * FROM biao1"; ResultSet rt; rt=stmt.executeQuery(sql); int port=0; //ta.append('\n'+"收到如下主机发来的邮件"+remoteHost.getHostName()+":\n"+datagram); while(rt.next()){ if(datagram.indexOf(rt.getString("username"))!=-1){ if(rt.getString("connection").indexOf("1")!=-1){ InetAddress remoteHost1=InetAddress.getByName(rt.getString("remoteHost").substring(1)); int remotePort1=rt.getInt("remotePort"); port=remotePort1+1; dataBuf=new byte[512]; dataBuf=datagram.getBytes(); System.out.print(datagram); ServerPacket=new DatagramPacket(dataBuf,dataBuf.length,remoteHost1,port); UDPServerSocket1.send(ServerPacket); } else{ datagram=new String("unconnect."); dataBuf=new byte[512]; //remoteHost=InetAddress.getByName("QH-20150828KDPO"); dataBuf=datagram.getBytes(); ServerPacket=new DatagramPacket(dataBuf,dataBuf.length,remoteHost,remotePort); UDPServerSocket.send(ServerPacket); } } } } }catch(Exception e){ System.err.println(e); } } } protected void finalize(){ if(UDPServerSocket!=null){ UDPServerSocket.close(); UDPServerSocket=null; ta.append("关闭服务器端的数据报连接!"); } } } class Close implements ActionListener{ public void actionPerformed(ActionEvent e){ System.exit(0); } } 客户端程序: import java.io.*; import java.net.*; import java.awt.*; import java.awt.event.*; import static java.lang.Thread.sleep; import java.util.Scanner; import java.sql.*; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.*; public class UDPClientService1 { /** * @param args the command line arguments */ public static void main(String[] args){ // TODO code application logic here Dl d=new Dl(args); } } class UDPClientService extends Frame implements ActionListener,Runnable{ DatagramSocket UDPClientSocket; DatagramPacket ClientPacket; InetAddress remoteHost; int remotePort; byte[] dataBuf; String datagram; private String send=""; String args[]=new String[3]; Scanner in; TextArea ta_receive=new TextArea(10,60),ta_send=new TextArea(5,60); JButton ok=new JButton("ok"),close =new JButton("close"),test=new JButton("test"); JPanel p3=new JPanel(),p1=new JPanel(),p2=new JPanel(); void Init_Frame(){ setTitle("服务器端口1"); setSize(500,450); setLayout(new BorderLayout()); ta_receive.setEditable(false); ta_send.requestFocus(); add(p1,BorderLayout.NORTH); add(p2,BorderLayout.CENTER); add(p3,BorderLayout.SOUTH); p1.add(ta_receive); p2.add(ta_send); p3.add(ok); p3.add(close); p3.add(test); ok.addActionListener(this); close.addActionListener(this); test.addActionListener(this); setVisible(true); } void Init(String args[]){ this.args=args; if(args.length<3){ ta_receive.append("请输入本地端口号,远程服务器主机号及端口名"); System.exit(0); } try{ UDPClientSocket =new DatagramSocket(Integer.valueOf(args[0])+1); remoteHost=InetAddress.getByName(args[1]); remotePort=Integer.parseInt(args[2]); }catch(Exception e){ System.err.println(e); } } public void run(){ while(true){ try { dataBuf=new byte[512]; ClientPacket=new DatagramPacket(dataBuf,512); UDPClientSocket.receive(ClientPacket);//接受 datagram=new String(ClientPacket.getData()); System.out.print(datagram); ta_receive.append('\n'+"Server:"+'\n'); ta_receive.append(" "+datagram+'\n'); } catch (IOException ex) { Logger.getLogger(UDPClientService.class.getName()).log(Level.SEVERE, null, ex); } } } public void actionPerformed(ActionEvent e){ if(e.getSource()==ok){ try{ in=new Scanner(ta_send.getText()); //int port=Integer.valueOf(args[0])+2; ta_receive.append('\n'+"Client:"+'\n'+""+ta_send.getText()+'\n'+'\n'); // UDPClientSocket1 =new DatagramSocket(port); datagram=send+in.nextLine(); dataBuf=datagram.getBytes(); ClientPacket=new DatagramPacket(dataBuf,dataBuf.length,remoteHost,remotePort); UDPClientSocket.send(ClientPacket);//发送 ta_send.setText(""); }catch(IOException e1){ System.err.println(e1); } } else if(e.getSource()==close){ dispose(); System.exit(0); } else if(e.getSource()==test){ send="lijing"; } } } class Dl extends Frame implements ActionListener{ JTextField t1=new JTextField(10),t2=new JTextField(10); JButton ok=new JButton("ok"),close=new JButton("close"); JLabel l=new JLabel("tips"),username1=new JLabel("username"),password1=new JLabel("password"); String args[]=new String[3]; Panel p1=new Panel(),p2=new Panel(),p3=new Panel(),p4=new Panel(); private String name,password,s; DatagramSocket UDPClientSocket; DatagramPacket ClientPacket; InetAddress remoteHost; int remotePort; byte[] dataBuf; String datagram; String flags="#dl#"; Dl(String args[]){ this.args=args; try{ UDPClientSocket =new DatagramSocket(Integer.parseInt(args[0])); remoteHost=InetAddress.getByName(args[1]); remotePort=Integer.parseInt(args[2]); }catch(Exception e){ System.err.println(e); } setLayout(new BorderLayout()); setSize(200,150); p1.add(username1); p1.add(t1); p1.add(password1); p1.add(t2); p1.add(ok); p1.add(close); p2.add(l); add(p1,BorderLayout.CENTER); add(p2,BorderLayout.SOUTH); ok.addActionListener(this); close.addActionListener(this); setVisible(true); } public void actionPerformed(ActionEvent e){ if(e.getSource()==ok){ try{ name=t1.getText(); password=t2.getText(); s=flags+name+password; dataBuf=s.getBytes(); ClientPacket=new DatagramPacket(dataBuf,dataBuf.length,remoteHost,remotePort); UDPClientSocket.send(ClientPacket);//发送 dataBuf=new byte[512]; ClientPacket=new DatagramPacket(dataBuf,512); UDPClientSocket.receive(ClientPacket);//接受 datagram=new String(ClientPacket.getData()); if(datagram.contains("connect")){ UDPClientService ucs=new UDPClientService(); ucs.Init_Frame(); ucs.Init(args); setVisible(false); Thread th=new Thread(ucs); th.start(); } else{ l.setText("error!!"); } }catch(IOException e1){ System.err.println(e1); } } else if(e.getSource()==close){ dispose(); System.exit(0); } } }

Java web项目 整合udp服务端

我需要在我的SSH web项目上面整合udp服务端,然后部署到阿里云服务器上面。让其他终端设备可以通过udp协议 传输数据包到服务器上面,然后我做业务处理。有没有大神知道怎么整合啊。

JAVA UDP协议下怎么样才能突破局域网内的双向通信啊?求高人务必指导下。。。。

本人是个接触JAVA2个月的菜鸟,最近在研究UDP广域网的通信,实现的过程也就是常说的双向通信:客户端(局域网内)先发数据给远方的服务器(服务器是公网IP,映射了个端口),服务器能收到,但是服务器不能回发数据给客户端。。。对于这方面的问题,在网上找了很多资料,全是局域网内的,网上说什么UDP打洞啊,穿透啊等等的,说实话有点晕,直到有一天在网上一个论坛看到同样类似的帖子,主人说根本就不需要什么UDP打洞这类的做法,只需要地址解析。。。。那么我想请问有没有什么方法来解决这个问题啊?此外,有个sockettools2调试工具,能在上面实现广域网UDP通信功能。求大神指点啊!

微信小程序客户端+java服务端. 只能使用websocket进行通信吗?

微信小程序客户端+java服务端. 只能使用websocket进行通信吗? 还有没有其他方式方法?

使用UDP协议,服务器怎么向某个客户端设备推送消息?

项目部署在局域网,多个设备,准备使用udp协议(因为性能问题,厂商要求不能使用TCP),现在客户端能发送消息到服务端,然后服务端返回消息,怎么在客户端设备不主动发送消息时,服务端主动推送消息到客户端呢?求大神指点

为什么代码正确,却不能实现UDP之间的通信呢?是不是电脑要设置什么还是怎么的?求大神解决哟.

public class UdpRece { public static void main(String[] args) throws Exception{ //1.定义Socket DatagramSocket ds = new DatagramSocket(10088); //2.创建数据包 byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf,buf.length); //3.接受数据 ds.receive(dp); //解析数据 String ip = dp.getAddress().getHostAddress(); String data = new String(dp.getData(),0,dp.getLength()); int port = dp.getPort(); System.out.println(ip); System.out.println(data); System.out.println(port); ds.close(); } } public class UdpSend { public static void main(String[] args)throws Exception { //1,创建udp服务。通过DatagramSocket对象。 DatagramSocket ds = new DatagramSocket(8888); //2,确定数据,并封装成数据包。DatagramPacket(byte[] buf, int length, InetAddress address, int port) /*InetAddress ia = InetAddress.getLocalHost(); System.out.println(ia); InetAddress ia1 = InetAddress.getByName("SKY-20170715YUU"); System.out.println(ia1.getHostAddress());*/ byte[] buf = "udp ge men lai le ".getBytes(); DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("10.0.107.243"),10088); //3,通过socket服务,将已有的数据包发送出去。通过send方法。 ds.send(dp); //4,关闭资源。 ds.close(); } }

关于Android利用局域网进行UDP通信的问题

我写了一个小程序准备利用UDP和电脑之间进行通信,然后基于这个做一点东西,可是问题是我用AVD测试很好用的,但是用真机测试就是不行。 我的思路是让电脑和Android设备连接一台路由器,路由器为两台设备分配固定的ip地址进行通信。 拜托大家帮我看看啊,我这才是第一步就郁闷的要死 下面是代码。 1:MainActivity package com.company.zebork.testudpll; import android.app.Activity; import android.content.Context; import android.net.wifi.WifiManager; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { EditText text; Button send; Handler handler; Message msg; EditText ad; String address; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text = (EditText) findViewById(R.id.editText); send = (Button) findViewById(R.id.send); ad = (EditText) findViewById(R.id.editText2); handler = new Handler() { @Override public void handleMessage(Message msg) { text.setText(""); } }; /* send.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { handler.handleMessage(msg); } });*/ send.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { System.out.println(ad.getText().toString()); AsyncTask<String ,String , Void> toSend = new AsyncTask<String, String, Void>() { @Override protected Void doInBackground(String... params) { address = ad.getText().toString(); UDPClient client = new UDPClient(address); System.out.println("here" + address); client.send(text.getText().toString()); msg = new Message(); handler.sendMessage(msg); return null; } @Override protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); } }.execute(address); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } } 2、UDPClient package com.company.zebork.testudpll; import java.io.IOException; import java.net.*; public class UDPClient { private DatagramPacket dp; private DatagramSocket ds; private byte[] buf; private String address; public UDPClient(String address) { buf = new byte[4096]; this.address = address; System.out.println("??" + address); try { ds = new DatagramSocket(8888); } catch (SocketException e) { e.printStackTrace(); } } public void send(String str) { buf = str.getBytes(); try { dp = new DatagramPacket(buf, buf.length,new InetSocketAddress(address,5679)); ds.send(dp); ds.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } 3、AndroidManifest【有些权限我都没有用到,因为调试这个错误才加上的】 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.company.zebork.testudpll" > <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 4、activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity" android:orientation="vertical"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editText" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editText2" android:layout_gravity="center_horizontal" android:text="ip" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="发送" android:id="@+id/send" android:layout_centerVertical="true" android:layout_centerHorizontal="true" android:layout_gravity="center_horizontal" /> </LinearLayout> 5、服务器的Java文件,我是用JavaSE写的,因为不会javaEE import java.io.IOException; import java.net.*; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class TestUDPClient extends Frame{ private static DatagramPacket dp; private static DatagramSocket ds; private static TextField text; private static TextArea ta; public static void main(String[] args) { Frame f = new TestUDPClient(); f.setLocation(200, 200); f.setSize(300,200); f.setVisible(true); text = new TextField(); ta = new TextArea(); f.add(text,BorderLayout.SOUTH); f.add(ta,BorderLayout.CENTER); f.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { if(ds!=null) ds.close(); System.exit(0); } }); startServer(); } public static void startServer() { byte[] buf = new byte[4096]; dp = new DatagramPacket(buf,buf.length); try { ds = new DatagramSocket(5679); } catch (SocketException e) { e.printStackTrace(); } while(true) { try { ds.receive(dp); if(ta.getText().length() > 0) ta.setText(ta.getText() + "\n" + new String(buf,0,dp.getLength())); else ta.setText(new String(buf,0,dp.getLength())); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }

UDP通讯是单向还是双向

UDP编程中,为什么服务器不能向客户端发送消息呢,客户端也不能接收服务器发送的消息? 服务器代码: import java.net.*; public class Server2 { public static void main(String[] args) { try { //向客户端发送消息 byte[] b="我是服务器".getBytes(); InetAddress ia= InetAddress.getByName("localhost"); DatagramPacket dp=new DatagramPacket(b,b.length,ia,9999); DatagramSocket ds =new DatagramSocket(); ds.send(dp); //接收从客户端发送的数据 byte[] b2=new byte[1024]; DatagramPacket dp2=new DatagramPacket(b2,b2.length); DatagramSocket ds2 =new DatagramSocket(9438); ds2.receive(dp2); //打印客户端发送的数据 System.out.println(new String(b2,0,b2.length)); ds.close(); ds2.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 客户端代码: import java.net.*; public class Client2 { public static void main(String[] args) { try { //向服务器发送数据 byte b[]="我是客户端".getBytes(); InetAddress ia = InetAddress.getByName("localhost"); DatagramPacket dp=new DatagramPacket(b,b.length,ia,9438); DatagramSocket ds=new DatagramSocket(); ds.send(dp); //接收从服务器发送的消息 byte b2[]=new byte [1024]; DatagramPacket dp2=new DatagramPacket(b2,b2.length); DatagramSocket ds2=new DatagramSocket(9999); ds2.receive(dp2); //打印服务器发送的数据 System.out.println("呵呵"); System.out.println(new String(b2,0,b2.length)); ds.close(); ds2.close(); } catch (Exception e) { e.printStackTrace(); } } }

C# 使用TCP UDP混合实现即时通讯(QQ为例)

我的思路是这样的 用户使用UDP IP 端口进行登录 此时开始计时 X秒 X秒内 未收到服务器的确认消息弹出登陆超时 X秒中服务器作出响应 登录失败即显示失败原因 若成功即 建立TCP连接 此时 窗口由登陆界面变成个人面板 上面包含好友列表 等信息 关键问题是!!!当QQ123456想要和QQ456789进行消息互发时 QQ123456发出的消息为Contact:123456|hello!|456789 服务器 想要将此消息转发给456789 必须要知道QQ456789 的IP啊 这样的问题该如何解决? 是不是 我重新 封装一个类叫Client 里面的参数为 Client+user 这样通过用户和客户端绑定的方式 记录QQ号对应的客户端信息

android真机使用UDP协议向PC机发送数据报,PC端的服务器接受不到

如题,代码如下: android上的客户端,忽略了Activity部分 public class LocationClient { private final String remoteIP;//外网IP private final int PORT = 28888; private final int PACKET_SIZE = 4096; private DatagramSocket dSocket; private DatagramPacket inPacket; private DatagramPacket outPacket; public LocationClient(String remoteIP) { super(); this.remoteIP = remoteIP; try { dSocket = new DatagramSocket(); } catch (SocketException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } inPacket = new DatagramPacket(new byte[PACKET_SIZE], PACKET_SIZE); try { //处理remoteIP地址字符串 String[] remoteIPSplit = remoteIP.split("\\."); byte[] remoteIPBuf = new byte[4]; for(int i = 0; i < 4; i++){ remoteIPBuf[i] = (byte)(Integer.parseInt(remoteIPSplit[i])&0xff); } outPacket = new DatagramPacket(new byte[PACKET_SIZE], 0, PACKET_SIZE, InetAddress.getByAddress(remoteIPBuf), PORT); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 发送数据 MAX长度 = 4k */ public void sendData(String content) { outPacket.setData(content.getBytes()); try { dSocket.send(outPacket); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void close() { dSocket.close(); } } PC机上的服务器: import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; import javax.swing.filechooser.FileNameExtensionFilter; public class LocationServer { private final int PORT = 28888; private final int PACKET_SIZE = 4096; private DatagramSocket dSocket; private DatagramPacket inPacket; private DatagramPacket outPacket; public LocationServer() { super(); try { dSocket = new DatagramSocket(PORT); } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } inPacket = new DatagramPacket(new byte[PACKET_SIZE], PACKET_SIZE); } public void run(){ while(true){ try { System.out.println("~~~~~服务器启动~~~~~"); dSocket.receive(inPacket); byte[] content = inPacket.getData(); System.out.println(String.valueOf(content)); new RecordManager(inPacket.getAddress().getHostAddress(), content).run(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally{ dSocket.close(); } } } private class RecordManager implements Runnable{ private String fileName; private byte[] addContent; public RecordManager(String fileName, byte[] addContent) { super(); this.fileName = fileName; this.addContent = addContent; } @Override public void run() { // TODO Auto-generated method stub File file = new File(fileName); try(RandomAccessFile rAccessFile = new RandomAccessFile(file, "w")){ //指针跳到末尾 rAccessFile.seek(file.length()); //追加内容 rAccessFile.write(addContent); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void main(String[] args){ new LocationServer().run(); } }

模拟服务器和客户端通信时出现的java.net.SocketException: Connection reset

模拟客户端上传,服务器保存下载并返回通知的功能,程序运行成功结束,客户端也收到了服务器的返回信息,但是最后报出java.net.SocketException: Connection reset ,,,请问是什么原因 客户端代码 ``` public static void main(String[] args) throws IOException { //客户端本地字节流读取文件 FileInputStream fis = new FileInputStream("D:\\111.jpg"); //客户端使用网络字节输出流,上传文件到服务器 Socket socket = new Socket("127.0.0.1",8888); OutputStream outputStream = socket.getOutputStream(); int len = 0; byte[] bytes = new byte[1024]; while ((len = fis.read(bytes))!=-1){ outputStream.write(bytes,0,len); } socket.shutdownOutput(); //客户端使用网络字节输入流,读取服务器回弹的信息 InputStream is = socket.getInputStream(); while((len = is.read(bytes))!=-1){ System.out.println(new String(bytes,0,len)); } fis.close(); socket.close(); } ``` 服务器代码 ``` public static void main(String[] args) throws IOException { ServerSocket server = new ServerSocket(8888); Socket accept = server.accept(); InputStream is = accept.getInputStream(); File file = new File("D:\\javagogogo"); if (!file.exists()){ file.mkdir(); } FileOutputStream fos = new FileOutputStream(file+"\\pic.jpg"); int len = 0 ; byte[] bytes = new byte[1024]; while ((len = is.read(bytes))!=-1){ fos.write(bytes,0,len); } OutputStream ops = accept.getOutputStream(); ops.write("上传成功".getBytes()); fos.close(); server.close(); } ```

求大神UDP服务端高并发设计架构,在线等

服务端只开了一个固定端口(业务规定),网上查了下,说可以保存客户端IP跟端口,服务端建新的SOCKET,跟新端口跟客户端处理后续数据,写了个简单程序,但是当同时刻连上来的客户端超过200个,就出现丢包情况: 1. 一个线程接收固定端口的数据,把数据分组 2. 把分组数据分配的SOCKET,端口,通知客户端 3. 多线程跟客户端处理数据

java web端实现TCP服务器端开发

需求是这样的: 有一个通讯模块是采用的TCP/UDP通讯协议,现在公司要求做一个接口,来实现基于TCP协议的服务器端开发,要求接口部署到WEB应用服务器WebLogic中之后就开始对本地某个端口进行监听,获取客户端的请求

使用eclipse用TCP协议创建服务器和客户端,从客户端向服务器传文件

服务器代码: package com.xfr.test; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; public class Test2_UpLoadServer { /**  * @param args  * @throws IOException   */ public static void main(String[] args) throws IOException { ServerSocket server = new ServerSocket(6666); //创建服务器,绑定端口号777 System.out.println("启动服务器,端口号为6666!!!"); while(true){ final Socket socket = server.accept();  //接收客户端的请求,有可能接收多个客户端的请求,所以用多线程 new Thread(){ public void run(){ try { InputStream  is = socket.getInputStream(); //拿到客户端的流 BufferedReader br = new BufferedReader(new InputStreamReader(is)); //用Buffer缓冲区更好读取 PrintStream ps = new PrintStream(socket.getOutputStream()); //用PrintStream的好处是可以写字符也可以写字节 String fileName = br.readLine();//接收到要上传的文件的名字 File dir = new File("upload"); //创建一个文件夹来存放文件 dir.mkdir(); File file = new File(dir,fileName); //对文件名字进行封装来进行判断操作 if(file.exists()){ ps.println("存在"); //若文件在服务器中存在,给与客户端提示 socket.close(); }else{ //文件在服务器中没有,则开始接收 FileOutputStream fos = new FileOutputStream(file); byte[] arr = new byte[8192]; int len; while(( len = is.read(arr)) != -1){ fos.write(arr, 0, len); } fos.close(); //记得关流和关端口 socket.close(); } } catch (IOException e) { e.printStackTrace(); } } }.start(); } } } 客户端代码: package com.xfr.test; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; public class Test2_UploadClient { /**  * 向服务器上传文件,文件路径从键盘获取  * @param args  * @throws IOException   * @throws UnknownHostException   */ public static void main(String[] args) throws UnknownHostException, IOException { Socket socket = new Socket("169.254.33.252",6666);//创建客户端 File file = getFile();//获取文件 BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintStream ps = new PrintStream(socket.getOutputStream()); ps.println(file.getName()); //将文件名字传给服务器,服务器再对其进行判断 String result = br.readLine(); if("存在".equals(result)){ System.out.println("该文件在服务器中已经存在,请不要重复上传!"); socket.close(); return; } else { //文件不存在的话,开始读取该文件 FileInputStream fis = new FileInputStream(file); byte[] arr = new byte[8192];  int len; while((len = fis.read(arr)) != -1){ ps.write(arr, 0, len);//向服务器传 } fis.close(); socket.close();//F:\Test\aaa.txt } } public static File getFile() { Scanner sc = new Scanner(System.in); while(true){ String s = sc.nextLine(); File file = new File(s); if(!file.exists()){ System.out.println("您要上传的文件不存在!重新输入文件路径:"); } else if(file.isDirectory()){ System.out.println("您输入的是文件夹路径!重新输入文件路径:"); } else{ return file; } } } } ###执行后输入路径,路径正确的话程序不会停下来,红方块一直在 ![图片说明](https://img-ask.csdn.net/upload/201710/25/1508926710_596979.png) 手动点掉红方块后刷新项目 ![图片说明](https://img-ask.csdn.net/upload/201710/25/1508926743_190021.png) 可以看到eclipse当前路径多了要拷贝的文件,可是文件字节大小为0 ![图片说明](https://img-ask.csdn.net/upload/201710/25/1508926754_412742.png) 更多

外网APP客户端和内网服务端通讯的java中间程序,说一下怎么写,有代码更好

一边是安卓的APP,是外网的,另一边是java的服务端,是内网的,现在需要在外网和内网联通,做一个中间通信程序。流程是app发送request请求通过中间程序发送到内网服务端,服务端处理后,返回响应经过中间程序,最后到app。需要用java开发中间程序,说一下开发思路和需要使用什么技术,如果有代码更好。

如何用本机测试UDP数据的发送与接收,最好有完整的测试代码,谢谢!

如何用本机测试UDP数据的发送与接收,网上找了几个都不行,希望各位大神帮助一下哈,不胜感激!

udp怎么实现客户端对客户端收发消息

我在做一个udp的聊天程序,我能做到客户端与服务端的收发消息,但是怎么实现客户端对客户端的收发? ![图片说明](https://img-ask.csdn.net/upload/201610/02/1475376391_984355.jpg) 我想过用服务端来进行转发,但是这工程量也太大了吧,求高手指点

Java通过得到的Socket流向串口发送数据

我是一个菜鸟,最近学习Java ,写了个向串口发送数据的代码,有点问题,希望各位大神给指点指点 ``` package server; import gnu.io.CommPortIdentifier; import gnu.io.PortInUseException; import gnu.io.SerialPort; import gnu.io.SerialPortEvent; import gnu.io.SerialPortEventListener; import gnu.io.UnsupportedCommOperationException; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import java.util.TooManyListenersException; import javax.lang.model.element.Parameterizable; import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream; public class server extends Thread implements SerialPortEventListener { static Enumeration portList; //已经连接上的端口枚举 static CommPortIdentifier portId; //串口通信管理类 static SerialPort serialPort; //串口的引用 static OutputStream outputStream; static InputStream ins; static int count = 0; @SuppressWarnings("null") public static void main(String[] args) throws IOException { final ServerSocket s = new ServerSocket(12345); InetAddress addr = InetAddress.getLocalHost(); System.out.println("Ip地址为:"+addr.getHostAddress()); SerialPort port = PortsManager.getSerilPort("COM3", 2400); if(null==port) { System.out.println("串口为空!"); return; } try { port.setSerialPortParams(2400,SerialPort.DATABITS_8, SerialPort.STOPBITS_1,SerialPort.PARITY_SPACE); } catch (UnsupportedCommOperationException e) { // TODO Auto-generated catch block e.printStackTrace(); } OutputStream outs = port.getOutputStream(); Socket ss = s.accept(); InputStream ins = ss.getInputStream(); byte[] b = new byte[8]; int len = -1; while((len = ins.read(b))!= -1){ count++; System.out.println("Socket 连接成功!"); System.out.println(b.toString()); if(count>2){ outs.write(b); } } } public void run(){ Thread th=new Thread(); th.start(); try { Thread.sleep(10000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //@Override public void serialEvent(SerialPortEvent arg0) { //TODO Auto-generated method stub try { serialPort.addEventListener(this);//注册一个SerialPortEventListener事件来监听串口事件 serialPort.notifyOnDataAvailable(true);//设置监听模式为当有数据到达时唤醒监听线程。 } catch (TooManyListenersException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } ```

Python可以这样学(第一季:Python内功修炼)

董付国系列教材《Python程序设计基础》、《Python程序设计(第2版)》、《Python可以这样学》配套视频,讲解Python 3.5.x和3.6.x语法、内置对象用法、选择与循环以及函数设计与使用、lambda表达式用法、字符串与正则表达式应用、面向对象编程、文本文件与二进制文件操作、目录操作与系统运维、异常处理结构。

获取Linux下Ftp目录树并逐步绑定到treeview

在linux下抓取目录树,双击后获取该节点子节点(逐步生成)。另外有两个类,一个是windows下的(一次性获取目录树),一个是linux下的(足部获取目录树)

NS网络模拟和协议仿真源代码

NS网络模拟和协议仿真源代码,包含代码说明及协议分析

简单的NS3网络模拟仿真(计算机网络作业)

简单的NS3网络模拟仿真,内附有PPT演示。论文评述。以及简单的安装教程。

手把手实现Java图书管理系统(附源码)

【超实用课程内容】 本课程演示的是一套基于Java的SSM框架实现的图书管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群。详细介绍了图书管理系统的实现,包括:环境搭建、系统业务、技术实现、项目运行、功能演示、系统扩展等,以通俗易懂的方式,手把手的带你从零开始运行本套图书管理系统,该项目附带全部源码可作为毕设使用。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27513 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程2年有效观看时长,大家可以抓紧时间学习后一起讨论哦~ 【学员专享增值服务】 源码开放 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

150讲轻松搞定Python网络爬虫

【为什么学爬虫?】 &nbsp; &nbsp; &nbsp; &nbsp;1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到! &nbsp; &nbsp; &nbsp; &nbsp;2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: 网络请求:模拟浏览器的行为从网上抓取数据。 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 &nbsp; 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+每周三讨论会+1v1答疑

cuda开发cutilDLL

包括cutil32.dll、cutil32D.dll、cutil32.lib、cutil32D.lib,以及附带的glew32.lib/freeglut.lib

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

Tensorflow与python3.7适配版本

tensorflow与python3.7匹配的最新库,更新了python3.7以后可以自行下载,或者去国外python的扩展包下载界面自行下载。

4小时玩转微信小程序——基础入门与微信支付实战

这是一个门针对零基础学员学习微信小程序开发的视频教学课程。课程采用腾讯官方文档作为教程的唯一技术资料来源。杜绝网络上质量良莠不齐的资料给学员学习带来的障碍。 视频课程按照开发工具的下载、安装、使用、程序结构、视图层、逻辑层、微信小程序等几个部分组织课程,详细讲解整个小程序的开发过程

专为程序员设计的数学课

<p> 限时福利限时福利,<span>15000+程序员的选择!</span> </p> <p> 购课后添加学习助手(微信号:csdn590),按提示消息领取编程大礼包!并获取讲师答疑服务! </p> <p> <br> </p> <p> 套餐中一共包含5门程序员必学的数学课程(共47讲) </p> <p> 课程1:《零基础入门微积分》 </p> <p> 课程2:《数理统计与概率论》 </p> <p> 课程3:《代码学习线性代数》 </p> <p> 课程4:《数据处理的最优化》 </p> <p> 课程5:《马尔可夫随机过程》 </p> <p> <br> </p> <p> 哪些人适合学习这门课程? </p> <p> 1)大学生,平时只学习了数学理论,并未接触如何应用数学解决编程问题; </p> <p> 2)对算法、数据结构掌握程度薄弱的人,数学可以让你更好的理解算法、数据结构原理及应用; </p> <p> 3)看不懂大牛代码设计思想的人,因为所有的程序设计底层逻辑都是数学; </p> <p> 4)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; </p> <p> 5)想修炼更好的编程内功,在遇到问题时可以灵活的应用数学思维解决问题。 </p> <p> <br> </p> <p> 在这门「专为程序员设计的数学课」系列课中,我们保证你能收获到这些:<br> <br> <span> </span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">①价值300元编程课程大礼包</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">②应用数学优化代码的实操方法</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">③数学理论在编程实战中的应用</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">④程序员必学的5大数学知识</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">⑤人工智能领域必修数学课</span> </p> <p> <br> 备注:此课程只讲程序员所需要的数学,即使你数学基础薄弱,也能听懂,只需要初中的数学知识就足矣。<br> <br> 如何听课? </p> <p> 1、登录CSDN学院 APP 在我的课程中进行学习; </p> <p> 2、登录CSDN学院官网。 </p> <p> <br> </p> <p> 购课后如何领取免费赠送的编程大礼包和加入答疑群? </p> <p> 购课后,添加助教微信:<span> csdn590</span>,按提示领取编程大礼包,或观看付费视频的第一节内容扫码进群答疑交流! </p> <p> <img src="https://img-bss.csdn.net/201912251155398753.jpg" alt=""> </p>

实现简单的文件系统

实验内容: 通过对具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。 要求: 1.在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个简

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

四分之一悬架模型simulink.7z

首先建立了四分之一车辆悬架系统的数学模型,应用MATLAB/Simulink软件建立该系统的仿真模型,并输入路面激励为随机激励,控制不同的悬架刚度和阻尼,选用最优的参数得到车辆悬架的振动加速度变化曲线

MFC一站式终极全套课程包

该套餐共包含从C小白到C++到MFC的全部课程,整套学下来绝对成为一名C++大牛!!!

C++语言基础视频教程

C++语言基础视频培训课程:本课与主讲者在大学开出的程序设计课程直接对接,准确把握知识点,注重教学视频与实践体系的结合,帮助初学者有效学习。本教程详细介绍C++语言中的封装、数据隐藏、继承、多态的实现等入门知识;主要包括类的声明、对象定义、构造函数和析构函数、运算符重载、继承和派生、多态性实现等。 课程需要有C语言程序设计的基础(可以利用本人开出的《C语言与程序设计》系列课学习)。学习者能够通过实践的方式,学会利用C++语言解决问题,具备进一步学习利用C++开发应用程序的基础。

Java8零基础入门视频教程

这门课程基于主流的java8平台,由浅入深的详细讲解了java SE的开发技术,可以使java方向的入门学员,快速扎实的掌握java开发技术!

HoloLens2开发入门教程

本课程为HoloLens2开发入门教程,讲解部署开发环境,安装VS2019,Unity版本,Windows SDK,创建Unity项目,讲解如何使用MRTK,编辑器模拟手势交互,打包VS工程并编译部署应用到HoloLens上等。

C/C++学习指南全套教程

C/C++学习的全套教程,从基本语法,基本原理,到界面开发、网络开发、Linux开发、安全算法,应用尽用。由毕业于清华大学的业内人士执课,为C/C++编程爱好者的教程。

pokemmo的资源

pokemmo必须的4个rom 分别为绿宝石 火红 心金 黑白 还有汉化补丁 资源不错哦 记得下载

test_head.py

本文件主要是针对使用dlib的imglab标注工具标记的目标检测框和关键点检测而生成的xml文件, 转换为coco数据集格式.

Java面试史上最全的JAVA专业术语面试100问 (前1-50)

前言: 说在前面, 面试题是根据一些朋友去面试提供的,再就是从网上整理了一些。 先更新50道,下一波吧后面的也更出来。 求赞求关注!! 废话也不多说,现在就来看看有哪些面试题 1、面向对象的特点有哪些? 抽象、继承、封装、多态。 2、接口和抽象类有什么联系和区别? 3、重载和重写有什么区别? 4、java有哪些基本数据类型? 5、数组有没有length()方法?String有没有length()方法? 数组没有length()方法,它有length属性。 String有length()方法。 集合求长度用

2019 AI开发者大会

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。我们不空谈口号,只谈技术,诚挚邀请AI业内人士一起共铸人工智能新篇章!

linux“开发工具三剑客”速成攻略

工欲善其事,必先利其器。Vim+Git+Makefile是Linux环境下嵌入式开发常用的工具。本专题主要面向初次接触Linux的新手,熟练掌握工作中常用的工具,在以后的学习和工作中提高效率。

DirectX修复工具V4.0增强版

DirectX修复工具(DirectX Repair)是一款系统级工具软件,简便易用。本程序为绿色版,无需安装,可直接运行。 本程序的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复

20行代码教你用python给证件照换底色

20行代码教你用python给证件照换底色

2019 Python开发者日-培训

本次活动将秉承“只讲技术,拒绝空谈”的理念,邀请十余位身处一线的Python技术专家,重点围绕Web开发、自动化运维、数据分析、人工智能等技术模块,分享真实生产环境中使用Python应对IT挑战的真知灼见。此外,针对不同层次的开发者,大会还安排了深度培训实操环节,为开发者们带来更多深度实战的机会。

我以为我对Mysql事务很熟,直到我遇到了阿里面试官

太惨了,面试又被吊打

相关热词 c#分级显示数据 c# 不区分大小写替换 c#中调用就java c#正则表达式 验证小数 c# vscode 配置 c#三维数组能存多少数据 c# 新建excel c#多个文本框 c#怎么创建tcp通讯 c# mvc 电子病例
立即提问